2013-12-13 2 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" /> 

При тестировании на Ripple (эмулятор) это дает мне статус 0 ошибку. При тестировании того же сценария на моем локальном сервере (через браузер) он дает мне правильное предупреждение о варне.

Я также протестировал вызов json, и это отлично работает в эмуляторе, но оно не работает, когда я загружаю apk на свой телефон. Тот же результат, что и проблема выше с jsonp (ошибка состояния 0).

+0

Кажется, проблема связана с эмулятором Ripple. Протестировал тот же код с eclipse, и все работает отлично! Это может быть версия cordova в Ripple, но после тестирования с версией кордовы 2.0.0 она все равно дала мне ошибку 0. Единственное, о чем я могу думать, это то, что мой config.xml ошибочен, но это не объясняет тот факт, что json-тест работает, а тест jsonp не работает. – rinaldo

ответ

0

Ищет проблему. Это была проблема с моим SSL-сертификатом. Я тестировал на сервере с неподписанным сертификатом, который дал мне неправильный ответ. Использование подписанного сертификата разрешило все мои проблемы.