JQuery - Как установить JSON через Ajax?
Я пытаюсь поместить некоторые JSON-форматированные данные через Ajax с jQuery на сервер. Мой код выглядит следующим образом:
$.ajax({
type: "PUT",
url: myURL,
contentType: "application/json",
data: {"data": "mydata"}
});
Но на стороне сервера я получаю строку data=mydata
вместо ожидаемого JSON. Firebug говорит мне то же самое.
Где ошибка?
Ответы
Ответ 1
Я думаю, что данные должны быть строкой. Объекты преобразуются в строки запросов, которые вы видите здесь.
Вы можете использовать метод JSON.stringify(obj)
для преобразования объекта в строку. Код для объекта JSON можно получить из: https://github.com/douglascrockford/JSON-js/blob/master/json2.js.
В качестве альтернативы просто передайте код, который вы используете, чтобы создать объект как литерал String, но я предполагаю, что это всего лишь пример, и вы хотите закодировать какой-либо объект, который вы уже создали.
Ответ 2
Если вам всегда нужно отправлять 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);
}
});
Ответ 3
//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) {
},