Post JSON zu ASP.NET MVC 4-Aktion von JQuery
Arbeite ich an einer app, die verwendet ASP.NET MVC 4. In gewisser Weise habe ich das Gefühl, ich Lerne alles von Grund auf :). Ich hab mir sagen lassen es lohnt sich.
Muss ich nach ein paar JSON auf eine Action in meinem controller. Meine Aktion sieht wie folgt aus:
[Authorize]
public class MyController : Controller
{
[HttpPost]
public ActionResult RemoveItem(string itemID)
{
//Do stuff...
return Json(new { Status = 1, Message="Success" });
}
}
Mein JQuery-code sieht wie folgt aus:
function removeItem(id) {
var json = { "itemID": id };
$.ajax({
type: "POST",
url: "/myController/removeItem",
contentType: "application/json; charset=utf-8",
data: json,
dataType: "json",
success: removeItemCompleted,
error: removeItemFailed
});
}
function removeItemCompleted(results) {
}
function removeItemFailed(request, status, error) {
}
In Fiddler, Bemerke ich einen 500 Fehler zurückgegeben. Das TITEL-Feld in der Antwort, sagt: "Invalid JSON primitive: itemID".
Was mache ich falsch?
Danke!
- Was macht Ihr
json
variable Wert Aussehen? - Wenn Sie ' re passing es gibt wirklich keine Notwendigkeit, um die variable zu erstellen. Deine Methode erwartet einen string namens
itemID
damit Sie tun sollten, so etwas wie:data: { itemID: id }
Keine AnführungszeichenitemID
- ohne die Anführungszeichen ist es kein gültiges JSON.
- Ich möchte lernen, die JSON-Ansatz. Ich habe tatsächlich übergeben zu müssen, noch mehr Daten. Ich habe versucht, schneiden Sie es nach unten zum Wohle Beispiel. Alle meine Daten ist der Schlüssel/Wert-Paaren, obwohl keine verschachtelten arrays oder ähnliches. Das ist, warum ich wollen, verwenden Sie JSON.
- Verstanden-aber in diesem Fall gibt es keine Notwendigkeit, pass alles andere als itemId. Wenn Ihr Action erwartet ein Objekt, dann könnten Sie schicken eine json-stringified Objekt über den Draht.
- Heilige Kuh. Ich wünschte, ich hatte nicht durchforsten das internet auf der Suche für diesen post, jedes mal wenn ich ein neues MVC-Projekt, das muss post JSON zu einer action-Methode. Scheint es nicht schlecht zu jemand anderem, Sie müssen kopieren/einfügen dieses Zeug in jedem Projekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher sein, senden Sie JSON:
sollte
IE7 und unten muss ein shim: https://github.com/douglascrockford/JSON-js
HINWEIS: Dave Eine Antwort ist auch richtig, aber nicht direkt die Antwort auf Ihre Frage. I +1 ' ed es.
du scheinst nicht zu brauchen, JSON hier. Im Idealfall ist die id, param übergeben werden würde, in Ihr URI:
Dass ist wahrscheinlich, warum Ihre Aktion nicht identifiziert werden können. Es erfordert einen parameter.
Nachtrag: Kritiker weisen darauf hin, dass Daten, die übergeben wird ein string, und somit nicht weitergegeben werden, da eine id nicht korrekt sind. Ich sollte haben darauf hingewiesen, dass die action-Methode sollte sein umgeschrieben, um zu akzeptieren
string id
.verwenden Sie diesen code :