$.getJSON 不适用于 Android 移动设备
Posted
技术标签:
【中文标题】$.getJSON 不适用于 Android 移动设备【英文标题】:$.getJSON not working on Android mobile devices 【发布时间】: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 请求是否被发送?如果你不能回答你还没有调试足够。
【参考方案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");
);
);
【讨论】:
我看到一个与我的***.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);
【讨论】:
以上是关于$.getJSON 不适用于 Android 移动设备的主要内容,如果未能解决你的问题,请参考以下文章
Buildfire:buildfire.geo.getCurrentPosition 不适用于移动应用(android 和 ios)和 PWA