【问题标题】:$.getJSON not working on Android mobile devices$.getJSON 不适用于 Android 移动设备
【发布时间】:2016-07-05 06:29:12
【问题描述】:

使用本地文件 JSON,我通过 $.getJSON 获取数据并使用 jQuery mobile 输出

$('body').off('tap').on('tap', 'ul li', function(event) {
    var jqxhr = $.getJSON("one.json", function(data) {
        console.log("success");
        alert(data.name + " " + data.one);
        $("#json").html(data.name + " " + data.one);
    }).done(function() {
        console.log("second success");
        $("#d1").html("second success");
    }).fail(function(jqxhr, textStatus, error) {
        var err = textStatus + ', ' + error;
        console.log("Request Failed: " + err);
        $("#d2").html("Request Failed: " + err);
    }).always(function() {
        console.log("complete");
        $("#d3").html("complete");
    });
});

这在计算机和 HTC 上运行良好,但在三星设备上却无法运行。在三星没有错误,输出空div

【问题讨论】:

  • 如果您检查传递给fail() 处理程序的参数,您将获得更多信息。目前,鉴于您的问题缺乏细节,我们所能做的就是告诉您如何调试问题,而不是如何实际解决它。
  • 在三星不是error,输出为空div
  • 鉴于您的代码,似乎不可能有一个空的 div 结果,除非 ajax 请求甚至没有启动。
  • 这个问题只有samsumg.Android 4.2.1
  • ajax 请求是否被发送?如果你不能回答你还没有调试足够。

标签: jquery json ajax jquery-mobile


【解决方案1】:

阅读上面的 cmets,我相信您的代码实际上可能在一台设备上运气好,而在更多设备上失败。

您使用的“on tap”看起来无效(并且它的使用确实带有警告,因此有限制)。 http://api.jquerymobile.com/tap/

警告:小心使用水龙头

Tap 使用 vclick,因此应谨慎使用 触摸设备。有关详细信息,请参阅vclick API documentation

根据我的理解,在点击之后,应该会出现功能 - 不引用任何特定的标签。请注意上面代码中的第一行与下面的代码之间的区别。

$('body').off('tap').on('tap', function(event) {

    var jqxhr = $.getJSON("one.json", function(data) {
        console.log("success");
        alert(data.name + " " + data.one);
        $("#json").html(data.name + " " + data.one);
    }).done(function() {
        console.log("second success");
        $("#d1").html("second success");
    }).fail(function(jqxhr, textStatus, error) {
        var err = textStatus + ', ' + error;
        console.log("Request Failed: " + err);
        $("#d2").html("Request Failed: " + err);
    }).always(function() {
        console.log("complete");
        $("#d3").html("complete");
    });
});

【讨论】:

  • 我看到一个与我的stackoverflow.com/questions/14191338/… 类似的问题,但在 API 中有问题
  • 定义处理程序?你是说选择器吗?您已将事件绑定到正文。如果你想将它绑定到 ul li,那么像 $("ul > li").on("tap", function.....);您需要在使用之前阅读如何使用 tap,否则您将依赖代码而不知道限制,直到您或您的一位用户旅行。
  • 我做了按钮$('#test').on('tap', function(event) {});。再次htc和pc工作,三星不工作。
  • 听起来你遇到了设备或安卓版本相关的问题。您是否像我之前建议的那样阅读了 jquery 移动页面,以及关于在触摸设备上使用点击的警告?
【解决方案2】:
if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN){
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 2019-02-25
    • 2018-10-31
    • 1970-01-01
    • 2015-11-15
    • 2016-11-02
    • 2023-03-23
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多