【问题标题】:Making Ajax request on Android returns No Transport error在 Android 上发出 Ajax 请求返回 No Transport 错误
【发布时间】:2011-02-24 12:18:48
【问题描述】:

我使用 Phonegap 在 Android 上开发了一个示例应用。
单击按钮时,将向服务器发出 Ajax 请求 (http://192.168.0.199:8080/test.php)。
test.php 只是与 hello world 相呼应。
我正在使用 Jquery 1.5 进行 Ajax 调用。

这里是 Ajax 调用的代码:

$.ajax({  
 url:"http://192.168.0.199:8080/test.php",  
 beforeSend: function(x) {
 alert("The URL "+url);  
},
type:'POST',  
crossDomain: true,
success:function(data) {  
  alert(data);  
},  
error:function(XMLHttpRequest,textStatus, errorThrown) {     
 alert("Error status :"+textStatus);  
 alert("Error type :"+errorThrown);  
 alert("Error message :"+XMLHttpRequest.responseXML);  
}
});    

但是,每次调用这个函数,都会抛出一个错误:

Error Type: No Transport
Error Message: undefined
Error Status: error

注意:我在 Manifest 文件中添加了 INTERNET 权限。我使用的是运行 Android 1.6 的 G1 设备

提前致谢

【问题讨论】:

    标签: android jquery cordova


    【解决方案1】:

    您似乎正在尝试呼叫本地网络中的客户端。
    尝试验证您是否有权访问该本地网络。

    【讨论】:

    • 嗨,Erik,我可以访问浏览器上的网址...绝对不是网络问题。
    • 它在 Android 2.2 上的 Samsung Galaxy S 上运行良好 可能是版本问题...G1 在 Android 上运行1.6
    【解决方案2】:

    从 jQuery 1.5 开始,一个新的 AJAX / XHR 实现正在使用中。并且 Android 1.5 / 1.6 并没有说它支持 CORS(跨域调用)。所以一种“修复”的方法是通知 jQuery 它确实支持 cors:

    jQuery.support.cors = true;
    

    我无法在 2.1 及更高版本上重现该问题。所以我希望那个版本的 XHR 实现确实说它支持 cors。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多