phonegap跨域获取未定义的值

时间:2013-07-05 04:39:48

标签: cordova cross-domain jsonp

这是我的问题。我使用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)"; 

2 个答案:

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