Функция jQuery ajax не работает в приложении Android PhoneGap

Я хочу получить доступ к открытому API через ajax в мобильном приложении, его работа прекрасна в iphone, но не работает в приложении Android phonegap:

returning error->"error message-null,typeerror-Result of expression 'data'[null] is not an object and error status-parsererror"

Требуется ли настройка браузера.

Я хочу вызвать веб-службу в приложении Android-phonegap:

$.ajax({  
   url:'stringURL',  
   beforeSend: function(x) {      
     x.setRequestHeader('Authorization','username/pwd');  
   },  
   dataType:"xml",  
   contentType:'application/xml',  
   timeout:10000,  
   type:'POST',  
   success:function(data) {  
     alert(data);  
   },  
   error:function(XMLHttpRequest,textStatus, errorThrown) {     
     alert("Error status :"+textStatus);  
     alert("Error type :"+errorThrown);  
     alert("Error message :"+XMLHttpRequest.responseXML);  
   }
});

Ответы

Ответ 1

Похоже, что обнаружена ошибка синтаксического анализа данных. Вы хотите, чтобы XMLHttpRequest анализировал XML-данные, поэтому выбранный URL должен возвращать действительный XML. Существует несколько возможных причин, по которым это работает, но не выполняется на другой платформе:

- Заголовки запросов браузера могут быть разными, в результате чего возникает другой ответ сервера. Некоторые серверы могут давать ответы статуса HTTP 200 с некоторым сообщением об ошибке в случае проблем, который не анализирует действительный XML.

- Возвращенный XML может быть проблематичным и хорошо разбирается в iPhone из-за причуд в браузере, но не работает в другой версии/варианте WebKit, который использует Android.

- Полученные данные повреждены из-за других заголовков запросов, провайдера, прокси или других эффектов. Например, некоторые прокси обрабатывают запросы HTTP/1.0, а серверы плохого поведения обслуживают HTTP/1.1 с чередующейся кодировкой каждый раз, поэтому XML будет поврежден заголовками блоков.

В целях отладки вы можете изменить запрос на текстовый запрос и показать извлеченные данные или даже сохранить его на SD-карте устройства, если это возможно в вашем приложении. Затем вы можете проверить, что он был неповрежденным и действительно является XML.