Korrigieren Sie mich, wenn ich falsch liege, aber es war mein Verständnis, dass ein POST verwendet werden sollte, wenn ich Daten änderte, und ein GET sollte verwendet werden, wenn ich abrufen möchte Daten.Versuchen, JQuery/Ajax Get/POST Anrufe zu verstehen
Basierend auf dieser Annahme.
Ich habe (MVC5) App.
Mein JavaScript
function MyLoadData(myValue) {
$.ajax({
method: 'POST',
url: '/Home/GetMyData',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ "MyValue": myValue}),
success: function (data) {
// Do Stuff
}
});
und mein Controller.
public JsonResult GetMyData(string myValue)
{ // Do Stuff }
Dies funktioniert nur, wenn ich die Methode festgelegt: ‚POST‘, wenn ich es ‚GET‘ gesetzt wird es noch den Server anrufen, aber nicht den myValue an die Steuerung übergeben.
Außerdem gibt es keine Daten Annotation für die GetMyData-Methode.
In diesem Szenario sollte ich nicht GET verwenden, um meine Daten vom Controller zu bekommen?
ergänzt Kommentare basiert:
function MyLoadData(myValue) {
$.ajax({
method: 'POST',
url: '/Home/GetMyData',
dataType: 'json',
data: { "MyValue": myValue},
success: function (data) {
// Do Stuff
}
});
Ihrem Browser Werkzeuge Verwenden Sie die aktuelle Anfrage (und URL mit Parametern), um zu sehen, die gesendet wird. Versuchen Sie nicht, die Daten zu "stringifizieren", wenn Sie eine GET-Anfrage durchführen. –
Warum setzen Sie contentType auf 'application/json'? Dies ist der Inhaltstyp der Daten, die Sie senden. Die Standardanwendung/x-www-form-urlencoded ist wahrscheinlich für Ihre Zwecke in Ordnung. Ie. Lass diese Linie einfach weg. Sonst - was passiert, wenn Sie Ihren Controller direkt vom Browser mit einer Abfragezeichenfolge aufrufen? MyValue = abc? –