Ich versuche, mit ASP.NET MVC Ajax-Aufrufen zu beginnen.
Regler:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
Aussicht:
<head runat="server">
<title>FirstAjax</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/AjaxTest/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
</head>
Ich muss nur eine Warnung mit der Controller-Methode drucken, die Daten zurückgibt. Über dem Code drucken Sie einfach "Chamara" in meiner Ansicht. Ein Alarm wird nicht ausgelöst.
AKTUALISIEREN
Ich habe meinen Controller wie folgt geändert und er funktioniert. Ich habe keine klare Vorstellung, warum es jetzt funktioniert. Jemand bitte erklären. Der Parameter "a" hat nichts damit zu tun. Ich habe ihn hinzugefügt, weil ich nicht zwei Methoden mit demselben Methodennamen und denselben Parametern hinzufügen kann. Ich denke, dies ist möglicherweise nicht die Lösung, aber es funktioniert
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
[HttpGet]
public ActionResult FirstAjax()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(string a)
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
c#
jquery
asp.net
asp.net-mvc
asp.net-mvc-2
Chamara
quelle
quelle
{"name":"chamara"}
. dann versuchen zu lesen alsdata['name']
Antworten:
Nach dem Update, das Sie durchgeführt haben,
Früher haben Sie JSON nur an den Browser zurückgegeben, ohne HTML zu rendern. Jetzt wird eine HTML-Ansicht gerendert, in der Ihre JSON-Daten abgerufen werden können.
Sie können JSON seine einfachen Daten nicht direkt rendern, nicht HTML.
quelle
Entfernen Sie das Datenattribut, da Sie
POSTING
nichts für den Server sind (Ihr Controller erwartet keine Parameter).Und in Ihrer AJAX-Methode können Sie anstelle einer statischen Zeichenfolge Folgendes verwenden
Razor
und verwenden@Url.Action
:Aus Ihrem Update:
quelle
Verwenden Sie ein Rasiermesser, um Ihre URL dynamisch zu ändern, indem Sie Ihre Aktion wie folgt aufrufen:
quelle
Als erstes müssen nicht zwei verschiedene Versionen von JQuery-Bibliotheken auf einer Seite vorhanden sein. Entweder "1.9.1" oder "2.0.0" reichen aus, damit Ajax-Aufrufe funktionieren.
Hier ist Ihr Controller-Code:
So sollte Ihre Ansicht aussehen:
quelle
Wenn Sie in Ihrem Ajax-Aufruf nur die C # -Methode aktivieren müssen, müssen Sie nur zwei Materietypen und eine URL übergeben, wenn Ihre Anfrage eingeht. Dann müssen Sie nur die URL angeben. Bitte folgen Sie dem Code unten, es funktioniert gut.
C # -Code:
Java Script Code bei Get Request
Java Script Code bei Post Request und auch [HttpGet] an [HttpPost]
Hinweis: Wenn Sie FirstAjax in demselben Controller verwenden, in dem sich Ihr View Controller befindet, ist der Name des Controllers in der URL nicht erforderlich. mögen
url: 'FirstAjax',
quelle
Es ist für Ihre UPDATE-Frage.
Da Sie nicht zwei Methoden mit demselben Namen und derselben Signatur haben können, müssen Sie das Attribut ActionName verwenden:
AKTUALISIEREN:
Weitere Informationen dazu, wie aus einer Methode eine Aktion wird, finden Sie unter diesem Link. Sehr gute Referenz.
quelle
Aussicht;
Controller-Methode;
quelle
statt zu
url: serviceURL,
benutzenund übergeben Sie 2 Parameter an successFunc?
quelle
Fügen Sie "JsonValueProviderFactory" in global.asax hinzu:
quelle