虽然我知道许多诸如ASP.NET MVC的体系结构都具有内置功能来处理JSON.stringify作为contentType,但我的处境略有不同,因此也许将来会对某人有所帮助。我知道这可以节省我几个小时!
由于我的http请求是由来自IBM(AS400环境)的CGI API在不同子域上处理的,因此这些请求是跨源的,因此是jsonp。我实际上是通过javascript对象发送ajax的。这是我的ajax POST的示例:
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"