$.ajax({
type: "GET",
dataType: "jsonp",
jsonpCallback: "jsoncallback",
//async: false ,
data:
{
// some data here
},
url: "http://mydomain.com/checkRequest.php",
success: function(data){
alert("123");
alert(data.data.NameA);
},
error: function(jqXHR, textStatus){
alert("Request failed: " + textStatus);
}
});// end of ajax
我可以从下面的网址获取以下字符串,
([{
"data": {
"Rate": "",
"RoleA": "Student",
"NameA": "studentD",
"RoleB": "Tutor",
"NameB": "tutorB",
"Give": "0",
"Get": "1",
"Accept": "0",
"RateCounter": ""
}
}
]);
http://mydomain.com/checkRequest.php?callback=jsoncallback&nameB=tutorB&roleB=Tutor&get=1&roleA=Student&nameA=studentD&give=0&_=1364082750444
但是,它会警告
parsererror
。请问哪里出了问题?如果删除
jsonpCallback: "jsoncallback",
并将URL
更改为url:"http://mydomain.com/checkRequest.php?jsoncallback=?",
,则没有parsererror,但它无法alert(data.data.NameA);
最佳答案
您可能需要jsonp
选项而不是jsonpCallback
:
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "jsoncallback",
// ...
});
jsonp
设置参数的名称,并与您的其他示例匹配:url: "http://mydomain.com/checkRequest.php?jsoncallback=?",
使用
jsonpCallback
,您将改为设置值,从而导致包含callback=jsoncallback
的URL。服务器似乎不期望这样,并且最终在没有函数名的情况下响应:([{...}]);
与类似的东西:
jQuery191_etc([{...}]);
从docs:
jsonp
覆盖jsonp请求中的回调函数名称。这个值
将使用'callback =?'中的'callback'代替的一部分
网址中的查询字符串。所以
{jsonp:'onJSONPLoad'}
会导致'onJSONPLoad=?'
传递到服务器。 [...]jsonpCallback
指定JSONP请求的回调函数名称。这个值
将使用代替由自动生成的随机名称
jQuery的。 [...]