在我的应用中,我有这段代码。我注意到,内容类型无法发送。你知道如何强制发送吗?
$.ajax({
crossDomain: true,
type: 'GET',
url: 'http://serv/services/rest/contact/' + localStorage.getItem('contact'),
callback: 'jsonpCallback',
jsonpCallback: 'jsonpCallback',
jsonp: '_jsonp',
**contentType: 'application/json',**
dataType: 'jsonp json',
timeout : 10000,
success: function(data){
$("#name").attr("value", data.response.label);
} },
error: function (xhr, ajaxOptions, thrownError){
alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError);
},
});
我的请求标题是:
Accept:*/*
Accept-Charset:ISO-8859-2,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Cookie:JSESSIONID=F0ED33279488888888B35A731B40EE0C; oam.Flash.RENDERMAP.TOKEN=789456321
Host:serv
User-Agent:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1
正如我所说,缺少contentType。我错过了什么?
感谢您的帮助。
答案 0 :(得分:0)
如果您要发布数据,则只能设置Content-Type。所以你需要改变:
type: 'POST'
您可能希望告诉服务器您接受的回复尝试:
accepts: 'application/json'
有关详细信息,请参阅此处jQuery Ajax API
答案 1 :(得分:0)
您不需要内容类型来处理请求。
将dataType
更改为json
,如下所示:
$.ajax({
type: "GET",
url: 'http://serv/services/rest/contact/' + localStorage.getItem('contact'),
dataType: "json",
success: function(data){
$("#name").attr("value", data.response.label);
},
error: function (xhr, ajaxOptions, thrownError){
alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError);
}
});
而是将您的数据作为JSON
返回。
我确实注意到了您的crossDomain: true,
,为此,您需要阅读Cross-Origin Resource Sharing,更准确地添加此标题Access-Control-Allow-Origin: http://www.example.com
作为回应。
作为PHP的一个例子:
header('Access-Control-Allow-Origin: http://www.example.com');
.htaccess
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://www.example.com"
</IfModule>