Android:触发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

我正在构建一个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;
  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更多阅读:太棒了-很高兴您能让它工作!别忘了贴出你问题的答案并接受它。听起来这可能会帮助一些人。