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

时间:2010-09-14 11:07:33

标签: javascript jquery android ajax cordova

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

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

1 个答案:

答案 0 :(得分:2)

似乎提取的数据存在解析错误。您希望XMLHttpRequest解析XML数据,因此获取的URL必须返回有效的XML。有几个可能的原因可以解释为什么在一个平台上工作但在另一个平台上失败:

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

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

- 由于其他请求标头,提供程序,代理或其他影响,已获取的数据已损坏。例如,某些代理只处理HTTP / 1.0请求,而不良行为服务器每次都使用分块编码来提供HTTP / 1.1,因此XML标题会损坏XML。

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