这是我的问题。我使用jsonp来解决跨域问题,它可以在我的本地网页上运行(页面请求远程服务器,而不是localhost)。但是当我将页面部署到phonegap作为Android应用程序时,错误返回为: XMLHttpRequest.status:200 XMLHttpRequest.readyState:4 textStatus:parsererror XMLHttpRequest.responseText:undefined
这是我的测试代码:
对于客户方:
$.ajax({
type: "GET",
async: false,
url:url,
dataType: "jsonp",
jsonp: "callback",
jsonpCallback:"myresult",
success: function(data){
if (data.flag == "success")
alert("yeah");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
alert(XMLHttpRequest.responseText);
}
});
对于服务器端,我使用php:
$callback = $_GET["callback"];
$a = array(
"flag"=>"success"
);
$result = json_encode($a);
echo "myresult($result)";
答案 0 :(得分:0)
您可能应该WhiteList使用您的域名。
白名单规则可在 res / xml / config.xml 中找到(如果是android),并使用元素<access origin="*.yourdomain.com/*" />.
声明
答案 1 :(得分:0)
使用dataType:"json"
代替jsonp
。
见这个例子
$.ajax({
type: "GET",
async: false,
url:url,
dataType: "json",
success: function(data){
if (data.flag == "success")
alert("yeah");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
另外,请尝试echo $result;
而不是echo "myresult($result)";