【问题标题】:Phonegap android app using durandal : page with ajax call not opening使用 durandal 的 Phonegap android 应用程序:带有 ajax 调用的页面未打开
【发布时间】:2013-11-12 11:16:22
【问题描述】:

我是 android 的新手,我遇到了一个问题,即带有 ajax 调用的页面没有加载到使用 Phonegap 开发的本机应用程序中。

跨域AJAX POST-request 在网络浏览器(包括手机浏览器)上运行良好,但不适用于使用Phonegap 构建的本机应用程序。

我在durandal 中创建了一个从Facebook 获取数据并显示在页面中的应用程序。它在浏览器中运行良好,但使用 ajax 调用的页面未加载到使用 Phonegap 构建的本机应用程序中。注意:其他静态页面工作正常。

我的 Ajax 脚本:

define(function(require){
  return {
    getCustomers:function(){
      //do some ajax and return a promise
        return $.ajax({
          url: 'http://graph.facebook.com/facebook?callback=?',
          dataType: 'json',
        }).promise();
    }
  };
});

域白名单 - config.xml

<access origin="*"/>
<!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
<content src="index.html" />

用户权限

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

我遇到了一个错误。不知道跟这个有关系吗?

TypeError: Result of expression 'parentElement' [null] is not an object. at file:///android_asset/www/js/index.js:41

【问题讨论】:

    标签: android jquery ajax cordova durandal


    【解决方案1】:

    你的服务器端也必须启用CORS参数,同时传递“mobile.allowCrossDomainPages = true;”在电话间隙中。

    在stackoverflow中搜索CORS相关的问题,有很多解决方案。

    让我解释一下为什么它在移动浏览器中有效,但在 phonegap 包装中无效。 Phonegap 打包从应用程序的本地文件系统中提取文件,使引用域为“本地”。当您向 URL 发出请求时,它显然位于不同的域中,因此是 CORS。在 phonegap 配置中启用 CORS 参数主要解决了这个问题。如果适用,您必须检查 web 服务/URL 是否支持 CORS。寻找服务器端 CORS 参数启用。

    【讨论】:

      【解决方案2】:

      您确定为您的项目明确设置了 phonegap 吗?

      请查看此页面:http://www.adobe.com/devnet/html5/articles/getting-started-with-phonegap-in-eclipse-for-android.html 并逐步检查。

      【讨论】:

      • 是的,我确定。该应用程序一直在工作,直到我在其中添加了 ajax 代码。
      【解决方案3】:

      它应该工作。无论如何,尝试将此添加到头部代码中,

      $(document).bind("mobileinit", function () {
          $.support.cors = true;
          $.mobile.allowCrossDomainPages = true;
      });
      

      并尝试在此处删除,

          return $.ajax({
            url: 'http://graph.facebook.com/facebook?callback=?',
            dataType: 'json' //<<---HERE
          }).promise();
      

      json 还是jsonp

      【讨论】:

      • 我认为 facebook 正在返回 'json'。它在浏览器中运行良好
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      相关资源
      最近更新 更多