Rozejrzałem się i próbuję znaleźć eleganckie rozwiązanie tego problemu, a jeszcze go nie znajduję. Mam usługę sieciową ASMX w .NET, które próbuję wywołać, wymaga parametrów.Przesyłanie pojedynczych cytatów za pomocą jQuery, Ajax i JSON
używam jQuery po stronie klienta, aby zadzwonić do serwisu i mój kod jQuery wygląda mniej więcej tak:
$.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); }
});
działa bardzo dobrze, z wyjątkiem obu nazwy lub informacji zawierać " znak, pojedynczy cytat. Proste, ponieważ mój JSON definiuje koniec wartości pola i jest pojedynczym cytatem. Gdy którekolwiek z tych pól zawiera pojedynczy cytat, otrzymuję tylko "Wewnętrzny błąd serwera", ale dalsza inspekcja z użyciem Fiddler pokazała mi wyniki (nie zawracam sobie głowy ich publikowaniem) wskazujące na problem pojedynczego cytatu.
Umieściłem coś tymczasowo, aby usunąć pojedyncze cytaty po stronie klienta i umieścić je z powrotem po stronie serwera, ale to daleki od elegancji. Czy istnieje bardziej elegancki sposób na uniknięcie tych pojedynczych cytatów, aby mój kod mógł działać?
wielką odpowiedź, dzięki. Użyłem json.js i JSON.encode (myobject) zamiast budować ciąg. – Odd
W przeglądarkach, które go obsługują (wszystkie przeglądarki w bieżącej wersji) powinieneś raczej preferować rodzimy obiekt JSON (http://blogs.msdn.com/ tj./archive/2008/09/10/native-json-in-ie8.aspx) jeśli json.js nie zrobi tego automatycznie. – EricLaw