我如何在多个元素的jQuery中使用AJAX?

时间:2017-02-15 21:59:08

标签: javascript jquery ajax

(function($) {
    $('.myclass').each(function(){
        $(function() {
            $.ajax({
                url: "myPHP.php?app",
                method: 'GET',
                complete: function(jqXHR, textStatus) {
                    var response = JSON.parse(jqXHR.responseText);
                    $('.myclass').html(response.app);
                }
            });
        });
    });
})(jQuery);

我有多个myclass实例,我希望每个实例都被response.app替换,但它不会发生。

我缺少什么?

2 个答案:

答案 0 :(得分:4)

使用您的代码,在服务器的每个响应中,您的所有.myclass都将被修改。你可以尝试这样的事情:

$('.myclass').each(function() {
  var $elem = $(this); // <-------------- Save the element for the ajax callback
  $.ajax({
    url: "myPHP.php?app",
    method: 'GET',
    complete: function(jqXHR, textStatus) {
      var response = JSON.parse(jqXHR.responseText);
      $elem.html(response.app); // <-------------- Use it
    }
  });
});

顺便说一下,每个调用请求的URL似乎相同,没有特定的参数。如果您的真实代码中存在这种情况,那么您只需要发出一个请求(无.each()),并将结果应用于您的所有元素:

$.ajax({
    url: "myPHP.php?app",
    method: 'GET',
    complete: function(jqXHR, textStatus) {
      var response = JSON.parse(jqXHR.responseText);
      $('.myclass').html(response.app);
    }
});

答案 1 :(得分:0)

jquery的html函数处理所有myclass的替换 所以你只需要进行ajax调用并传递响应

$.ajax({
  url: "myPHP.php?app",
  method: 'GET'
}).done(function(response){
  $('.myclass').html(response.app)
});