Android:触发AJAX功能不工作
我正在构建一个AJAX函数,它可以调用Android:触发AJAX功能不工作,android,ajax,jquery,Android,Ajax,Jquery,我正在构建一个AJAX函数,它可以调用滚动或单击/touchtstart将一些内容附加到我的HTML中。在桌面环境中,无论是单击还是滚动事件,一切都非常适合我。然而,它们都不适用于我的安卓2.3.7 HTC EVO或安卓4.1.1上的Nexus 7 下面是我的click JavaScript事件处理程序: $('.loadMore').each(function() { //Set URL and start on the first page var self = this; v
滚动
或单击/touchtstart
将一些内容附加到我的HTML中。在桌面环境中,无论是单击还是滚动事件,一切都非常适合我。然而,它们都不适用于我的安卓2.3.7 HTC EVO或安卓4.1.1上的Nexus 7
下面是我的click JavaScript事件处理程序:
$('.loadMore').each(function() {
//Set URL and start on the first page
var self = this;
var path2root = ".";
var loc = window.location.origin;
var url = loc + "/process.php";
var subcategoryId = $(this).parent().attr('data-subcategoryId');
var page = 1;
// Build the updated URL
$(self).bind('touchstart', function(e) {
e.preventDefault();
page++;
// AJAX function for processing JSON
$.ajax({
url: url + "?subcategoryId=" + subcategoryId + "&page=" + page,
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
var i = 0;
for(i = 0 ; i < data.length; i++) {
var articleId = data[i].articleResult.articleId;
var title = data[i].articleResult.title;
var subhead = data[i].articleResult.subhead;
var image = data[i].articleResult.image;
var response = "<td><div class='articleResult'><a href='" + path2root + "/article/article.php?articleId=" + articleId + "'><img src='" + image + "' width='120'/></a><br><h3><a href='" + path2root + "/article/article.php?articleId=" + articleId + "'>" + title.substring(0,25) + "</a></h3></div></td>";
$("table tr td:nth-last-child(2)").after(response);
};
}
});
});
});
请记住,这是一个移动优化的网页,不是原生的PhoneGap应用程序,我使用的是常规的jQuery 1.8.0,不是jQuery mobile或PhoneGap
我发现谷歌代码中关于Android 2.3没有有效接收touchstart事件的问题,这导致我开始构建滚动功能。根据您的链接,修复程序将在您的
touchstart
事件开始时包含e.preventDefault()
,如下所示:
$(self).bind('touchstart', function(e) { // include e as a reference to the event
e.preventDefault(); // prevents the default behaviour on this element
....
});
以上内容适用于我的Android 2.X设备;我希望有帮助 根据您的链接,修复程序将在
touchstart
事件开始时包括一个e.preventDefault()
,如下所示:
$(self).bind('touchstart', function(e) { // include e as a reference to the event
e.preventDefault(); // prevents the default behaviour on this element
....
});
以上内容适用于我的Android 2.X设备;我希望有帮助 因此,我能够使AJAX调用在滚动事件中正常运行。我已经放弃了
click/touchstart
事件,因为这似乎是Android中的一个错误
无论出于何种原因,Android在上传到Web服务器时没有正确读取动态URL:
var loc = window.location.origin;
var url = loc + "/process.php";
因此,当我使用编译后的URL构建ajax调用时:
$.ajax({
url: url + "?subcategoryId=" + subcategoryId + "&page=" + page,
窗口.origin.location
被误解。相反,我需要硬编码我的process.php
文件的位置:
url: "process.php?subcategoryId=" + subcategoryId + "&page=" + page,
我通过另一个SO帖子发现了我的解决方案
唯一的问题是我的代码是在iPhone上工作,而不是在Android上。如果有人知道这背后的原因,那将是一个很好的信息。因此我能够让AJAX调用在滚动事件中正常运行。我已经放弃了
click/touchstart
事件,因为这似乎是Android中的一个错误
无论出于何种原因,Android在上传到Web服务器时没有正确读取动态URL:
var loc = window.location.origin;
var url = loc + "/process.php";
因此,当我使用编译后的URL构建ajax调用时:
$.ajax({
url: url + "?subcategoryId=" + subcategoryId + "&page=" + page,
窗口.origin.location
被误解。相反,我需要硬编码我的process.php
文件的位置:
url: "process.php?subcategoryId=" + subcategoryId + "&page=" + page,
我通过另一个SO帖子发现了我的解决方案
唯一的问题是我的代码是在iPhone上工作,而不是在Android上。如果有人知道这背后的原因,那将是一个很好的信息。您是打算在滚动期间自动填充内容,还是在单击/触摸$('.loadMore')元素时自动填充内容?嗯,我最初构建它是为了在触摸/点击时填充内容,但在我的Android设备上无法实现时,我开始构建一个滚动功能。我包括了这两个脚本,因为这两个脚本在桌面Chrome/Ffox等浏览器上都能完美工作,但在我的任何Android浏览器上都不能;它应该能解决你的问题。。。如果只想绑定到单击/触摸事件,请记住删除滚动事件。您是想在滚动期间自动填充内容,还是在单击/触摸$('.loadMore')元素时自动填充内容?嗯,我最初构建滚动事件是为了在触摸/点击时填充,但在我的Android设备上无法运行时,我开始构建一个滚动功能。我包括了这两个脚本,因为这两个脚本在桌面Chrome/Ffox等浏览器上都能完美工作,但在我的任何Android浏览器上都不能;它应该能解决你的问题。。。如果您打算绑定到仅单击/触摸事件,请记住删除滚动事件。感谢您的回复!我已经根据您的建议更新了代码,但在我的2.3.7设备或4.1.1 Nexus 7中仍然没有收到任何信息。在Chrome、Ffox、Dolphin浏览器和原生Android浏览器中测试…嗯。。。你能用你的问题链接到你的测试页面或JSFiddle.net吗?如果不查看底层代码,很难进行诊断。我知道。。。给我一点时间,我将编译一个JSFIDLE页面嘿,我刚刚发现,它实际上与我的触摸事件无关,更与我的URL构建有关。由于Android处理我的
var loc=window.location.origin的本质代码>我必须硬编码文档位置。虽然不是最优的,但它目前仍然有效。非常感谢您的回复,+1更多阅读:太棒了-很高兴您能让它工作!别忘了贴出你问题的答案并接受它。听起来这可能会帮助一些人。谢谢你的回复!我已经根据您的建议更新了代码,但在我的2.3.7设备或4.1.1 Nexus 7中仍然没有收到任何信息。在Chrome、Ffox、Dolphin浏览器和原生Android浏览器中测试…嗯。。。你能用你的问题链接到你的测试页面或JSFiddle.net吗?如果不查看底层代码,很难进行诊断。我知道。。。给我一点时间,我将编译一个JSFIDLE页面嘿,我刚刚发现,它实际上与我的触摸事件无关,更与我的URL构建有关。由于Android处理我的var loc=window.location.origin的本质代码>我必须硬编码文档位置。虽然不是最优的,但它目前仍然有效。非常感谢您的回复,+1更多阅读:太棒了-很高兴您能让它工作!别忘了贴出你问题的答案并接受它。听起来这可能会帮助一些人。