2013-07-05 48 views
0

這是我的問題。我使用jsonp來解決跨域問題,它在我的本地網頁上工作(頁面請求遠程服務器,而不是本地主機)。但是,當我部署頁面到的PhoneGap爲Android應用程序,錯誤再次爲: XMLHttpRequest.status:200 XMLHttpRequest.readyState:4個 textStatus:parsererror XMLHttpRequest.responseText:未定義phonegap cross domain獲取未定義值

這裏是我的測試代碼:

對於客戶端:

$.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

欲瞭解更多信息:如果我在HTML設置網址,如:http://192.168.1.100/test.php和<訪問origin =「192.168.1.100/*」>,我可以得到正確的迴應。如果我將網址和白名單更改爲www.mydomain.com,則不起作用。 PS:我的手機已通過wifi連接。 – jjdodojohn

回答

0

也許你應該WhiteList你的域名。 白名單規則在RES/XML/config.xml中(Android中的情​​況下)發現與元素<access origin="*.yourdomain.com/*" />.

+0

我已經設置了WhiteList。我發現有一個錯誤:singleCursorHandlerTouchEvent -getEditableSupport FASLE當我按下提交按鈕時,它是否與上述問題有關? – jjdodojohn

+0

好吧,我沒有任何問題與JSON。我已經做了幾個json應用程序,並且都能流利地運行。我沒有任何想法還有什麼可能是錯的。如果你願意分享你的應用,那麼也許有人能夠發現問題。目前我出來的想法,對不起 – Lixas

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

+0

成功:功能(數據)塊,我可以警告味精沒有data.flag ==「成功」,但data.flag仍然報錯誤爲「未捕獲TypeError:無法讀取屬性」國旗'null:555「 – jjdodojohn