Mi sono guardato intorno, e sto cercando di trovare una soluzione elegante a questo, e devo ancora trovarne uno. Ho un servizio web ASMX in .NET che sto cercando di chiamare che richiede parametri.Invio con virgolette singole usando jQuery, Ajax e JSON
sto usando jQuery sul lato client per chiamare il servizio e il mio codice jQuery simile a questa:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/Reviews/HotelReview.asmx/SubmitReview",
data: "{'name': '" + name + "', " +
"'info': '" info + "'}",
processData: true,
beforeSend: function() { startSubmit(); },
complete: function() { submitComplete(); },
error: function(xhr) { submitError(xhr); },
success: function(msg) { submitSuccess(msg.d); }
});
Funziona molto bene, tranne quando sia nome o informazioni contengono la ' carattere, una singola citazione. Abbastanza semplice, perché il mio JSON definisce la fine del valore del campo ed è una singola citazione. Quando uno di questi campi contiene un solo preventivo, tutto ciò che ottengo è un "Errore interno del server", ma un'ulteriore ispezione utilizzando Fiddler mi ha mostrato i risultati (non mi preoccuperò di pubblicarli) indicando il problema del preventivo singolo.
Ho messo qualcosa sul posto temporaneamente per rimuovere le virgolette singole sul lato client e reinserirle sul lato server, ma questo è tutt'altro che elegante. C'è un modo più elegante per sfuggire queste citazioni singole in modo che il mio codice possa funzionare?
Grande risposta, grazie. Ho usato json.js e JSON.encode (myobject) invece di creare una stringa – Odd
Nei browser che la supportano (tutti i browser della versione attuale) probabilmente dovresti preferire l'oggetto JSON nativo (http://blogs.msdn.com/ ie/archive/2008/09/10/native-json-in-ie8.aspx) se json.js non lo fa automaticamente. – EricLaw