Sto provando a passare in alcuni semplici JSON a un metodo Web ASP.NET 4.5 da jQuery. E non sta funzionando nel modo in cui lo voglio. Funziona se accetto gli ingressi come parametri separati:Passare un oggetto definito dall'utente a ASP.NET Webmethod da jQuery, utilizzando JSON
[WebMethod]
public static Address GetJSonAddress(string name, string street)
Ma se provo a prenderlo come un oggetto che non funziona, ciò che viene passato è semplicemente nullo:
[WebMethod]
public static Address GetJSonAddress(Address newAddress)
ho provato Webmethods, Pagemethods, WCF usando DataContractJsonSerializer ... niente. La classe Address è decorata in modo appropriato con Datamember/DataContract. Le proprietà sono abbinate compreso il caso.
Il jQuery, in cui ho provato ogni sorta di passaggio dei dati incluso il wrapping in un oggetto Address ... se lo faccio in un altro modo rispetto a quello che ho il Webmethod non viene chiamato e ottengo l'errore 500 :
Save2 = function() {
var address = { prefix: GLOBALS.curr_prefix };
$('input[id^=' + GLOBALS.curr_prefix + '],select[id^=' + GLOBALS.curr_prefix + ']').each(function() {
address[this.id.substr(4)] = $.trim($(this).val());
})
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/WebServices/Insert",
data: JSON.stringify(address),
dataType: "json",
success: function (data, textStatus) {
console.log(data, textStatus);
},
failure: function (errMsg) {
MsgDialog(errMsg);
}
});
}
alla fine mi avrà a che fare questo con 121 stringhe di input, e davvero non vogliono avere un metodo con 121 parametri. Qualsiasi aiuto è apprezzato.
Cosa succede se si utilizza 'data: {newAddress: JSON.stringify (indirizzo)}'? – NoLifeKing
Il Webmethod non viene chiamato e ricevo l'errore 500 nel browser. Il POST sembra ok: {'Indirizzo': {"nome": "nome", "via": "via", "città": "città", "zip": "11111"}} –