javascript - Phonegap 中的 Jquery ajax 调用到 RESTful API

标签 javascript jquery android rest cordova

我正在尝试从 android 模拟器(使用 android 2.2)进行 RESTful api 调用。在我的登录请求服务器上,我正在设置 cors header response.setHeader("Access-Control-Allow-Origin", "*");

这个确切的代码在 Firefox 4 和 Chrome 10 上运行良好,我被引导相信 android 浏览器从版本 2.1 up 解析了这个 header 。 .

usr = $("#email").val();
pwd = $("#password").val();

$.ajax({
    url: "http://myremoteserver/login",
    data: {"username": escape(usr), "password": escape(pwd)},
    dataType: "json",
    headers: {"Accept": "application/json"},
    success: function(response) {
      console.log("Success: " + response);
      if (response.result == "success") {
        //doStuff
      }
      else {
        console.log("Success Error: " + response);
        $("#error").html(response);
      }
    },
    error: function(request, status, error) {
      console.log("Error status " + status);
      console.log("Error request status text: " + request.statusText);
      console.log("Error request status: " + request.status);
      console.log("Error request response text: " + request.responseText);
      console.log("Error response header: " + request.getAllResponseHeaders());
      $("#error").html(status);
    }

});

服务器从未收到请求,状态代码为 0,我读到这可能意味着跨脚本错误。但是,正如我所说,它在现代浏览器中运行良好。

这些是我在 LogCat 中看到的相关日志

03-29 20:30:46.935: DEBUG/PhoneGapLog(277): file:///android_asset/www/index.html: Line 36 : Error status error
03-29 20:30:46.935: INFO/Web Console(277): Error status error at file:///android_asset/www/index.html:36
03-29 20:30:46.954: DEBUG/PhoneGapLog(277): file:///android_asset/www/index.html: Line 37 : Error request status text: error
03-29 20:30:46.954: INFO/Web Console(277): Error request status text: error at file:///android_asset/www/index.html:37
03-29 20:30:46.985: DEBUG/PhoneGapLog(277): file:///android_asset/www/index.html: Line 38 : Error request status: 0
03-29 20:30:46.985: INFO/Web Console(277): Error request status: 0 at file:///android_asset/www/index.html:38
03-29 20:30:47.003: DEBUG/PhoneGapLog(277): file:///android_asset/www/index.html: Line 39 : Error request response text: 
03-29 20:30:47.003: INFO/Web Console(277): Error request response text:  at file:///android_asset/www/index.html:39
03-29 20:30:47.034: DEBUG/PhoneGapLog(277): file:///android_asset/www/index.html: Line 40 : Error response header: 
03-29 20:30:47.034: INFO/Web Console(277): Error response header:  at file:///android_asset/www/index.html:40
03-29 20:33:38.704: DEBUG/SntpClient(65): request time failed: java.net.SocketException: Address family not supported by protocol

如您所见,那里并没有太多东西……尝试调试任何东西都让人很痛苦。

编辑: AndroidManifest.xml权限

  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.VIBRATE" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.RECEIVE_SMS" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  <uses-permission android:name="android.permission.READ_CONTACTS" />
  <uses-permission android:name="android.permission.WRITE_CONTACTS" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

最佳答案

这是由于android模拟器无法连接到互联网造成的。通过将 -dns-server X.X.X.X(其中 X.X.X.X 是我的 dns 服务器)添加到 eclipse 中 Android 首选项中的“默认模拟器选项”来修复此问题。

关于javascript - Phonegap 中的 Jquery ajax 调用到 RESTful API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479043/

相关文章:

当应用程序处于后台时,Android GCM 通知不会重定向到预期的 Activity

javascript - 关键字 "this"进入eventHandler函数,运行到类中

php - 如何将 OOP 中的对象存储在 MySQL 等数据库中

jQuery 包裹列表元素

jquery - 使用 jQuery 获取每个 <li> 索引号

android - 水平滚动的水平回收器 View

javascript - 在输入的 Div 列表中导航

javascript - WooCommerce - 使用 add_to_cart 后显示更新的迷你购物车小部件以及更新的购物车内容/总计

javascript - 使用 jQuery/javascript,如何正确解析 HTML 表以将要更新的每一行的内容发送到数据库中

java - '源代码与字节码不匹配' Android Studio