jQuery的ajax功能在Android PhoneGap应用程序中不起作用

May*_*ari 14 javascript ajax jquery android cordova

我想在移动应用程序中通过ajax访问开放API,它在iphone中工作正常但在Android phonegap应用程序中不起作用:

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

是否需要遵循任何浏览器设置.

我想在android-phonegap应用程序中调用web服务:

$.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);  
   }
});
Run Code Online (Sandbox Code Playgroud)

dro*_*nus 3

看来获取的数据存在解析错误。您希望 XMLHttpRequest 解析 XML 数据,因此获取的 URL 必须返回有效的 XML。在一个平台上有效但在另一个平台上失败的可能原因有多种:

- 浏览器请求标头可能不同,导致服务器响应不同。如果出现问题,某些服务器可能会提供 HTTP 200 状态答案以及一些错误消息,但不会解析为有效的 XML。

-返回的 XML 可能有问题,并且由于浏览器的怪异而在 iPhone 上解析得很好,但在 Android 使用的另一个 WebKit 版本/变体上却失败了。

- 获取的数据由于其他请求标头、提供者、代理或其他影响而损坏。例如,某些代理仅处理 HTTP/1.0 请求,而行为不良的服务器每次都以分块编码提供 HTTP/1.1,因此 XML 将被分块标头损坏。

出于调试目的,您可以将请求更改为文本请求并显示获取的数据,或者甚至将其保存到设备 SD 卡(如果可能)在您的应用程序中。然后您可以验证它是否已完好无损地到达并且实际上是有效的 XML。