$.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
更改为网址:"http://mydomain.com/checkRequest.php?jsoncallback=?",
,则没有parsererror,但它无法alert(data.data.NameA);
答案 0 :(得分:2)
您可能需要jsonp
选项而不是jsonpCallback
:
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "jsoncallback",
// ...
});
jsonp
设置参数的 名称 ,并与您的其他示例匹配:
url: "http://mydomain.com/checkRequest.php?jsoncallback=?",
使用jsonpCallback
,您需要设置 值 ,从而生成包含callback=jsoncallback
的网址。服务器似乎不期望这样,并且在没有函数名的情况下最终响应:
([{...}]);
VS。类似的东西:
jQuery191_etc([{...}]);
来自docs:
<强> JSONP 强>
覆盖jsonp请求中的回调函数名称。这个值 将在'callback =?'中使用而不是'callback'的一部分 在url中查询字符串。因此
{jsonp:'onJSONPLoad'}
会导致'onJSONPLoad=?'
传递给服务器。 [...]
<强> jsonpCallback 强>
指定JSONP请求的回调函数名称。这个值 将用于代替自动生成的随机名称 jQuery的。 [...]