Хоча я знаю, що багато архітектур, таких як ASP.NET MVC, мають вбудовану функціональність для обробки JSON.stringify як contentType, моя ситуація дещо інша, тому, можливо, це може допомогти комусь у майбутньому. Я знаю, що це врятувало б мені години!
Оскільки мої запити http обробляються API CGI від IBM (середовище AS400) в іншому субдомені, ці запити мають поперечне походження, отже, і jsonp. Я фактично надсилаю свій ajax через javascript-об’єкти. Ось приклад моєї поштової пошти Ajax:
var data = {USER : localProfile,
INSTANCE : "HTHACKNEY",
PAGE : $('select[name="PAGE"]').val(),
TITLE : $("input[name='TITLE']").val(),
HTML : html,
STARTDATE : $("input[name='STARTDATE']").val(),
ENDDATE : $("input[name='ENDDATE']").val(),
ARCHIVE : $("input[name='ARCHIVE']").val(),
ACTIVE : $("input[name='ACTIVE']").val(),
URGENT : $("input[name='URGENT']").val(),
AUTHLST : authStr};
//console.log(data);
$.ajax({
type: "POST",
url: "http://www.domian.com/webservicepgm?callback=?",
data: data,
dataType:'jsonp'
}).
done(function(data){
//handle data.WHATEVER
});
dataType
не стосується того, як дані надсилаються. Він лише вказує, який тип даних, як ви очікуєте, буде повернутий дзвінком. Якщо ви хочете вказати серверу, який тип даних, ви вказуєте уdata
властивості, вам потрібно встановитиcontentType
властивість, аналогічнуcontentType: "application/json"