Передача js возражает как json против jQuery?

В дополнение к вкладу Исак Саво, вы можете посмотреть на блог Брайана Китинга для рабочего образца.

12
задан Dan Lew 1 June 2009 в 21:05
поделиться

3 ответа

Я считаю, что код будет вызывать .value или .toString () для вашего объекта, а затем передавать его по сети. Вы хотите передать JSON.

Итак, включите json-библиотеку javascript

http://www.json.org/js.html

А затем пройдите ...

    var saveData = {};
    saveData.one = "test";
    saveData.two = "tes2";


    $.ajax({
        type: "POST",
        url: "MyService.aspx/GetDate",
        data: JSON.stringify(saveData),      // NOTE CHANGE HERE
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            alert(msg.d);
        },
        error: function(msg) {
        alert('error');
        }

    });
26
ответ дан 2 December 2019 в 04:34
поделиться

Согласно в этом сообщении в блоге , причина, по которой он не работает, когда вы пытаетесь передать объект, заключается в том, что jQuery пытается сериализовать его. Из сообщения:

Вместо того, чтобы передавать этот объект JSON в веб-службу, jQuery автоматически сериализует и отправляет его как:

 fname = dave & lname = ward

На что сервер ответит:

 Недействительный примитив JSON: fname.

Это явно не то, чего мы хотим. Решение состоит в том, чтобы убедиться, что вы передаете jQuery строку для параметра данных [...]

Это то, что вы делаете в работающем примере.

4
ответ дан 2 December 2019 в 04:34
поделиться

Я предлагаю использовать плагин jquery-json , а затем вы можете просто сделать это в своем коде:

...
data: $.toJSON(saveData),
...
3
ответ дан 2 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: