0

这是我的问题。我使用 jsonp 来解决跨域问题,它适用于我的本地网页(页面请求远程服务器,而不是本地主机)。但是当我将页面作为 android 应用程序部署到 phonegap 时,错误返回为: 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)"; 
4

2 回答 2

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)";

于 2013-07-05T08:52:34.243 回答
0

可能您应该您的域名列入白名单。白名单规则位于res/xml/config.xml中(如果是 android)并使用元素声明<access origin="*.yourdomain.com/*" />.

于 2013-07-05T06:54:35.397 回答