优化ajax调用

时间:2012-01-31 18:15:18

标签: jquery ajax optimization

我现在需要从其他页面抓取几个项目,我的jquerycalls看起来像这样

$('.slide1 .pic').load('url div.zoomPad');
$('.slide1 .title').load('url .pname');
$('.slide1 .other').load('url .anotherdiv');

..等等..有没有办法只进行一次调用并抓住所有元素?然后把它们放在我想要的地方?

我打算在7个不同的页面中进行7次调用,所以我认为这样的调用不是一个好主意......应该有一个更干净的方式......你知道吗?

3 个答案:

答案 0 :(得分:4)

您可以使用.ajax代替.load并在success处理程序中自行处理回复。

$.ajax({...
    success: function(data){
        $('.slide1 .pic').html($(data).find('div.zoomPad'));
        // etc.
    ...
});

答案 1 :(得分:2)

是的,有较低级别的ajax功能:

$.ajax({
  url: "test.html",
  dataType: json 
  success: function(data){
    $('.first').val(data.first);
    $('.second').val(data.second);
    //...
    $('.n').val(data.n); // Sorry for the n part, 
                        // I have a test in Linear algebra soon...
  }
});

确保服务器以json格式返回数据,并且您已准备好以最简单的方式运行。

docs

答案 2 :(得分:1)

尝试这样的事情:

$('<div/>').load('url', function() {
    $('.slide1 .pic').html($(this).find('div.zoomPad'));
    $('.slide1 .title').html($(this).find('.pname'));
    $('.slide1 .other').html($(this).find('.anotherdiv'));
});

基本上,我们执行一个Ajax调用并将响应存储在jQuery对象中。然后我们可以使用.find()来解析响应以获得我们想要的内容。