2013-12-13 68 views
3

我想向我的遠程服務器發出一個AJAX調用,上傳幾個參數並下載一些內容。該腳本在瀏覽器中完美工作,但不適用於PhoneGap(在Ripple,chrome上測試)。PhoneGap ajax和jsonp問題

我已經看過了,如問題和解決方案:

PhoneGap not issuing AJAX (jsonp) request

Issues with jQuery, ajax, and jsonp

Ajax調用:

$.ajax({ 
     url: "https://mydomain.com/file.php", 
     data: {test:"test"},  
     type: 'GET', 
     dataType: 'jsonp', 
     timeout: 5000, 
     success: function(data){ 
      if(data['var'] == 'correct'){ 
       notifyAlert('correct','Login'); 
      }else{ 
       notifyAlert('incorrect','Login'); 
      }  
     },   
     error: function(x,e){ 
      if(x.status==0){ 
       notifyAlert('You are offline!!\n Please Check Your Network.', 'Error'); 
      }else if(x.status==404){ 
       notifyAlert('Requested URL not found.', 'Error'); 
      }else if(x.status==500){ 
       notifyAlert('Internel Server Error.', 'Error'); 
      }else if(e=='parsererror'){ 
       notifyAlert('Error.\nParsing JSON Request failed. '+x.status, 'Error'); 
      }else if(e=='timeout'){ 
       notifyAlert('Request Time out.'); 
      }else { 
       notifyAlert('Unknow Error.\n'+x.responseText, 'Error'); 
      }  
     } 
    }); 

遠程服務器代碼:

$record = array('var' => 'correct'); 
echo $_GET['callback'] . '(' . json_encode($record) . ');'; 

我的config.xml文件有:

<access origin="https://mydomain.com" /> 

當紋波(模擬器)測試它給我的狀態0錯誤。當在本地服務器上測試同一個腳本時(通過瀏覽器),它會給我提供正確的無效警報。

我還測試了一個json調用,並且在模擬器中完美地工作,但是當我將apk上傳到我的手機時它不起作用。與jsonp(狀態0錯誤)相同的結果與上面的問題。

+0

似乎有一個與紋波模擬器的問題。測試相同的代碼與日食和一切正常! 它可能是Ripple中的cordova版本,但是在使用cordova version 2.0.0進行測試後,它仍然給了我0狀態錯誤。我唯一能想到的就是我的config.xml是錯誤的,但這並不能解釋json測試工作和jsonp測試不起作用的事實。 – rinaldo

回答

0

終於找到了問題。這是我的SSL證書有問題。我使用未簽名證書在服務器上進行了測試,結果給了我不正確的迴應。使用簽名證書解決了我所有的問題..