【问题标题】:jQuery append content of multiple URLs in array with .get/ajaxjQuery 使用 .get/ajax 在数组中追加多个 URL 的内容
【发布时间】:2013-02-05 12:49:26
【问题描述】:

是否可以使用 jQuery 将数组中每个 URL 的内容附加到 URls 列表中的给定容器?

像这样:

<li class="contacts"><a href="index.php#contact1">Contact 1</a>
<li class="contacts"><a href="index.php#contact2">Contact 2</a>
<li class="contacts"><a href="index.php#contact3">Contact 3</a>
<li class="contacts"><a href="index.php#contact4">Contact 4</a>

我知道如何使用 jQuery 获取 URL 数组:

$(document).ready(function() {
    var allLinks = $('li.contacts a').map(function(i,el) { return $(el).attr('href');     });
    console.log($(allLinks));
});

好的,我在 allLinks 变量中有一个 URL 数组。我现在想用 .get() 函数附加每个 URL 的 #content 元素的内容。

如何从数组中的第一个 URL 循环到最后一个 URL 并将它们的内容附加到我的当前页面?基本上应该是这样结束的:

<div id="currentpage">
//#content of URL1
//#content of URL2
//#content of URL3
//#content of URL4
</div>

URL 列表是动态生成的(这不是问题)。

我试过这个:

$(document).ready(function() {
    var allLinks = $('li.contacts a').map(function(i,el) { return $(el).attr('href'); });
    console.log($(allLinks));

  var curr  = 0;
        if (curr++ > allLinks.length) curr = 0;

        $.get(allLinks[curr],function(data){
        var myContent = $(data).find('#content').children();
            jQuery('#wrapper').append(myContent);
   });
});

但没有成功。有什么线索吗?

【问题讨论】:

  • 你在数据中得到什么回应??

标签: jquery ajax arrays get


【解决方案1】:

更新答案:(将点击的 href 加载到 div 中)

$('.contacts a').click(function() {
  var url= $(this).attr('href');
  $('#currentpage').html('loading...');
  $.ajax({
     url: url
  }).success(function(data) {
     $('#currentpage').html(data);
  });       
  return false;
});
//JSBin http://jsbin.com/ucobuv/3/edit
//No need for the allLinks variable here

旧答案:(加载所有链接)

(function getContent(i) {
    $.ajax({
        url: allLinks[i++]
    }).success(function(data) {
        $('#currentpage').append(data);
        if(allLinks[i]) getContent(i);
    });
})(0);
//JSBin http://jsbin.com/ucobuv/1/edit

【讨论】:

  • 请注意 index.php#contact1 将获取整个 index.php 因此借出与 index.php#contact2 相同的结果(哈希不是 http 协议的一部分,而是 html/浏览器约定,它们并没有在请求中发送)
  • 我已经解决了这个问题,这不是问题。我想使用“find” jQuery 函数可以从返回的 Ajax 数据中定位精确元素,例如: var myContent = $(data).find('#mycontent').children() 无论如何谢谢!
  • 我已经尝试过了,它在第一个 URL 处结束,它不会继续到另一个 URL,它也应该附加。有什么线索吗?此外,对于 URL 格式——实际上,它们中没有散列,就像:index.php?id=XYZ
  • 啊,我发现如果我使用 ie。 (0,15) 在函数结束时,获取所有 URL。有没有更有效的方法?谢谢!
  • 它将获取 allLinks 数组的所有 url,在这里可以正常工作 jsbin.com/ucobuv/1/edit
猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 2017-10-21
  • 2014-09-18
  • 2021-10-26
  • 2012-12-30
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多