JQuery - Как поставить JSON через Ajax? - PullRequest
61 голосов
/ 17 ноября 2009

Я пытаюсь поместить данные в формате JSON через Ajax с jQuery на сервер. Мой код выглядит так:

$.ajax({
    type: "PUT",
    url: myURL,
    contentType: "application/json",
    data: {"data": "mydata"}
});

Но на стороне сервера я получаю строку data=mydata вместо ожидаемого JSON. Firebug говорит мне то же самое.

Где ошибка?

Ответы [ 3 ]

52 голосов
/ 17 ноября 2009

Я думаю, что данные должны быть строкой. Объекты преобразуются в строки запроса, это то, что вы видите здесь.

Вы можете использовать метод JSON.stringify(obj) для преобразования вашего объекта в строку. Код для объекта JSON доступен по адресу: https://github.com/douglascrockford/JSON-js/blob/master/json2.js.

В качестве альтернативы просто передайте код, который вы используете для создания объекта в виде буквенной строки, но я представляю, что это всего лишь пример, и вы захотите закодировать какой-то объект, который вы уже создали.

31 голосов
/ 26 июля 2011

Если вам всегда нужно отправлять JSON в вашем приложении, вы можете просто выполнить это где-то в вашем init и затем использовать вызов по умолчанию $.ajax, как в вашем примере, и он всегда будет сериализован как строка JSON вместо Ajax строка запроса по умолчанию.

Здесь я использую объект JSON, упомянутый выше:

$.ajaxSetup({
    contentType : 'application/json',
    processData : false
});
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {
    if (options.data){
        options.data=JSON.stringify(options.data);
    }
});
1 голос
/ 05 июля 2012
//url: this is a reference to the XML, where you need to define the mapping.
//<entry key="/getEmpDetails/transEfileGenerate.app">
//<bean class="com.adp.ems.framework.spring.MappingItem" p:delegate-ref="efilePageDelegate"
//p:action="passJSONObjectAndGetWebServiceOutput" />

//str1 is the input JSON that you need to pass... Ajax will automatically take care to get the response.
//</entry>

var kw = {
    url : "getEmpDetails/transEfileGenerate.app",
    timeout : 30000,
    handleAs : "json",
    sync: false,
    putData : str1,
    headers: { "Content-Type": "application/json"},
    load : function(result) {
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...