2012-01-31 79 views
2

我需要抓住从其他页面的几个项目,现在我jquerycalls看起来像这样优化Ajax调用

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

..等..有一种方法,使仅有1呼叫并抓住所有的元素?然后把它们放在我想要的地方?

即时通讯会在7个不同的页面上打7个电话,所以我不认为这会是一个好的想法,使这样的电话..应该有一个更清洁的方式..你知道吗?

+0

如果你可以调整服务器返回'json'你可以用轻松做到这一点。看到我的答案。 – gdoron 2012-01-31 18:37:19

回答

4

您可以使用.ajax而不是.load并自己在success处理程序中处理响应。

$.ajax({... 
    success: function(data){ 
     $('.slide1 .pic').html($(data).find('div.zoomPad')); 
     // etc. 
    ... 
}); 
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()来解析响应以获得我们想要的。

+1

加载是异步的,这是行不通的。 – 2012-01-31 18:23:10

+0

好的。它现在使用完整的回调函数。 – 2012-01-31 18:32:13

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

+1

基于'data.first'等,你假设响应是JSON正确的? – 2012-01-31 18:24:49

+0

@JamesMontagne。真的添加了它。 – gdoron 2012-01-31 18:25:37