Io uso ASP.NET MVC di inviare JSON da jQuery, e un po 'indietro JSON, usando questa piccola funzione di libreria:jQuery messaggio JSON non riesce quando si ritorna nulla da ASP.NET MVC
(function($) {
$.postJson = function(url, data) {
return $.ajax({
url: url,
data: JSON.stringify(data),
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8'
});
};
})(jQuery);
Così, ovviamente, ti chiamo questo come:
$('#button').click(function() {
$.postJson('/controller/action', { Prop1: 'hi', Prop2: 'bye' })
.done(function(r) { alert('It worked.'); })
.fail(function(x) { alert('Fail! ' + x.status); });
});
ASP.NET MVC 3 e ASP.NET MVC 4 sostegno presentare lato delle cose (prima che avevi bisogno di estendere ASP.NET MVC per gestire la presentazione JSON), ma il problema che sto correndo in è al ritorno. Sul controller torno spesso nulla da dire fondamentalmente "Successo, niente altro da dire", come:
[HttpPost]
public JsonResult DoSomething(string Prop1, string Prop2)
{
if (doSomething(Prop1, Prop2)
return Json(null); // Success
return Json(new { Message = "It didn't work for the following reasons" });
}
Io uso questo schema spesso e funziona benissimo - il mio successo/callback fatto viene chiamato e tutto va bene. Ma recentemente ho aggiornato ASP.NET MVC e jQuery, e ha smesso di funzionare - invece il mio callback fallito viene chiamato ogni volta che ho return Json(null);
. Inoltre, ho ispezionato la risposta e lo statusCode che viene restituito è in effetti 200, quindi il server non ha esito negativo - jQuery sta semplicemente dicendo che lo è.
BTW globale '$ (document) .ajaxError ...' 'spettacoli in exception.message':" ** Fine imprevista dell'input ** "quando viene restituito' Json (null) '(solo per dirlo, non mi ha aiutato a trovare il motivo del problema). – Slauma