android - Phonegap 跨域 AJAX POST 请求不适用于 Android

标签 android jquery ajax cordova cross-domain

跨域 AJAX POST 请求在 Web 浏览器(包括手机浏览器)上运行良好,但不适用于使用 Phonegap 构建的 native 应用程序

我创建了一个登录表单,用户必须输入他们的登录凭据,然后由托管在 heroku 上的服务器验证并返回 json {"success":true}如果输入了有效凭据。

我的 Ajax 脚本:

$.ajax({
   type: "POST",
   url: "http://domain.com/public/auth/app-login",
   contentType: "application/x-www-form-urlencoded; charset=utf-8",
   dataType: "json",
   data: {identity: <username from form>, password: <password from form>},
   crossDomain: true,
   cache: false,
   success: function(data) {
       obj = JSON.parse(data);
       if (obj && obj.success === true) {
          window.location.href = 'home.html';
       }
   },
   error: function(e) {
       alert('Error: ' + e.message);
   }
});

为解决此问题所采取的步骤:

<access origin="http://domain.com/public/auth/app-login" />

<access origin="*" />

  • 告诉 jQuery 允许跨域

$.support.cors = true; 或者 jQuery.support.cors = true;

  • 禁用缓存 cache: false

感谢任何帮助。

最佳答案

好的。如果 index.html 在本地,那么您可以在任何主机上调用 ajax,而不需要在客户端或服务器中启用 CORS。您删除:

$.support.cors = true; OR jQuery.support.cors = true;

和:

<access origin="http://domain.com/public/auth/app-login" />

多余,只用:

<access origin="*" />

需要检查并在AndroidManifest.xml中添加:

<uses-permission android:name="android.permission.INTERNET" />

如果您的应用需要,请添加更多权限。最后,在 $(document).ready() 中调用 ajax:

$.ajax({
   type: "POST",
   url: "http://domain.com/public/auth/app-login",
   dataType: "json",
   data: {identity: <username from form>, password: <password from form>},
   success: function(data) {
     obj = JSON.parse(data);
     if (obj && obj.success === true) {
        window.location.href = 'home.html';
     }
   },
   error: function(e) {
     alert('Error: ' + e.message);
   }
});

关于android - Phonegap 跨域 AJAX POST 请求不适用于 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19003025/

相关文章:

javascript - 将缩放和旋转值重置为零 Onclick 按钮

javascript - 使用 D3 Force Directed Graph 使用 jquery 监听事件

javascript - JS — 尝试返回 AJAX 数据

android - 当屏幕在 Android 中被阻止时?

Android:以阿拉伯语格式显示数字

android - 在 Android 中退出全屏后,嵌入式 IFRAME 视频继续在后台播放

jquery - 当 jquery ajax 成功数据到达时执行函数

java - Listview 项目布局将线性布局推离屏幕

jquery - 如何添加偏移量以更快地触发 jQuery 函数?

jquery - 从 WordPress 中获取特定类别的帖子内容并显示在网页上