来自Cordova app的AJAX请求返回'status = 0'

时间:2013-01-30 15:48:47

标签: jquery ios ajax post cordova

我有一个问题。我正在为ios开发一个cordova应用程序,我尝试使用jQuery发出一个AJAX请求。外部服务器在cordova.plist中列入白名单(实际上我列入白名单*只是为了确定)。我确信该函数是正确的,因为我可以在chrome中手动调用它,并返回正确的数据。

但是在应用程序中运行时会返回以下标题数据:
{"readyState":0,"responseText":"","status":0,"statusText":"error"}

crossDomain更改为false时,它会返回以下标头数据: {"readyState":4,"responseText":"","status":404,"statusText":"error"}

$.ajax({  
   type: "POST",  
   url: url,  
   data: request,  
   crossDomain:true,  
   success:  
       function(data, textStatus, jqXHR){  
           console.log('succes :S');  
           console.log(data);  
           console.log(textStatus);  
           console.log(jqXHR);  
       },  
    error:   
       function(data, textStatus, jqXHR){  
           console.log('fail :(');  
           console.log(data);  
           console.log(textStatus);  
           console.log(jqXHR);  
       }  
}); 

我希望有人可以告诉我什么是错的,因为我尝试了我能想到的一切。

编辑:谢谢你们,但我弄清楚问题是什么。该项目过去曾经有过加密,而且本地类中仍然存在一些代码残余。所以它包含或解密了一些URL。此主题现在可以关闭。

4 个答案:

答案 0 :(得分:1)

我回过头来回答了这个问题,并提供了修复Mootools和jQuery(以及一个vanilla javascript方法)的方法

下面: PhoneGap ajax call fails everytime

答案 1 :(得分:0)

如果您正在使用,请使用IP或虚拟DNS而不是localhost。

答案 2 :(得分:-1)

您是否尝试过指定数据类型'JSONP',如下所示

dataType: 'jsonp'

这是js跨域调用的解决方案

看这篇文章

Make cross-domain ajax JSONP request with jQuery

答案 3 :(得分:-1)

从HTML文件中删除以下元标记:

https://ssl.gstatic.com; style-src'self''unsafe-inline'; media-src *“>

希望这有效!!!