【问题标题】:jQueryMobile running on Android / PhoneGap refuses .load / .ajax在 Android / PhoneGap 上运行的 jQueryMobile 拒绝 .load / .ajax
【发布时间】:2012-05-01 15:33:29
【问题描述】:

我真的很讨厌问我觉得以前被问过一千次的问题。这是我觉得其他人一定遇到过的问题之一,buthavingsearchedstackoverflow,没有一个假设的解决方案对我有用,所以我一定做错了什么.....

我有一个非常简单的应用设置。 index.htm 和 terms.htm。 test.htm 中有一些文本数据。我在加载内容后的适当时间同时设置了$.support.cors = true;$.mobile.allowCrossDomainPages = true;

起初我尝试使用$('#elementid').load('terms.htm'); 将terms.htm 的数据加载到索引内的一个元素中(测试和索引都在同一个根/assets/www/ 目录中,我的webview 加载索引oncreate)但绝对没有发生任何事情.所以我选择尝试 .ajax,这样我至少可以收到一条错误消息,而我得到的只是“错误”。当然,可以在 DroidGap 上使用 JQ 加载本地文本资源吗?

$('#header').load('terms.htm');
$.ajax({
    type:"GET",
    timeout:10000,
    async: false,
    url: "terms.htm",
    success: function(data) {
        $('#header').html(data);
    },
    error: function(xhr,msg){
           alert( msg);
       }
});

【问题讨论】:

    标签: android jquery jquery-mobile cordova


    【解决方案1】:

    我不能 100% 确定,但我认为这是 ICS 4.0.3 的问题。在 4.0.2 上,ajax 似乎工作得很好,但对我来说,在 4.0.3 上也是如此,没有 ajax。和你一样,我已经尝试了所有方法,但没有任何效果..

    顺便说一句,我正在使用 PhoneGap。 Ajax 在标准浏览器中运行良好,但在 PhoneGap 应用程序中却不行。

    【讨论】:

    • 是的,我也在使用 4.0.3。我想知道它是否适用于 4.0.4...时间来闪烁?
    【解决方案2】:

    如果您正在 Chrome 中运行您的应用程序 那么你需要禁用web-security并启用加载本地文件见Cross-domain requests using PhoneGap and jQuery doesn't work Else if Safari 或模拟器或网络服务器 那么应该可以了

    【讨论】:

    • 该应用程序在我的移动 Android 应用程序中嵌入的 WebView 中运行。
    【解决方案3】:

    看到这个link。我有同样的问题,这解决了它。另外,我认为他们在 1.6.0 中修复了它,但我现在在 iOS 上使用 PhoneGap 1.6.1 看到了同样的问题。

    【讨论】:

      【解决方案4】:

      这只是一个长镜头,但你说“我在加载内容后的适当时间设置了 $.support.cors = true; 和 $.mobile.allowCrossDomainPages = true;。 ”。 jQuery 移动文档说 you have to set your global configuration before you load JQM:

      因为 mobileinit 事件会立即触发,所以您需要绑定您的事件 加载 jQuery Mobile 之前的处理程序。在以下链接到您的 JavaScript 文件 顺序:

      <script src="jquery.js"></script>
      <script src="custom-scripting.js"></script>
      <script src="jquery-mobile.js"></script>
      

      在你的情况下,这将是:

      <script src="jquery.js"></script>
      <script>
          $(document).bind("mobileinit", function(){
              $.support.cors = true;
              $.mobile.allowCrossDomainPages = true;
          });
      </script>
      <script src="jquery-mobile.js"></script>
      

      就像我说的,只是一个猜测......

      【讨论】:

      • 嗨丹尼尔;感谢您的意见。确实似乎在 JQM 之前设置了 cors 和 aCDP,但都没有效果 =X
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多