结合两个jQuery AJAX脚本

时间:2012-05-28 02:18:05

标签: jquery

我不知道这是否可行,因为我对JSON和jQuery很新。这是我的两个脚本:

$.getJSON('http://shop.com/test/?format=json', function(data){
  $.each(data.textpage, function(index, text){
    $('<div></div>').html('' + text + '').appendTo('.verzendkosten');
  });
});

$.getJSON('http://shop.com/vraag/?format=json', function(data){
  $.each(data.textpage, function(index, text){
    $('<div></div>').html('' + text + '').appendTo('.eigenschappen');
  });
});

是否可以将这两者结合起来?这两个脚本都有效,但我很好奇这些脚本是如何组合的。

4 个答案:

答案 0 :(得分:1)

不确定你的意思是合并。我假设您想要删除两个片段中的duplcate代码。

将其包装到通用的可重用函数中,并将页面名称和类名称作为参数

传递
function DoSomethingGreat(page,targetClass)
{
   $.getJSON('http://shop.com/'+page+'/?format=json', function(data){
     $.each(data.textpage, function(index, text){
       $('<div></div>').html('' + text + '').appendTo(targetClass);
     });
   });
}

并将其称为

DoSomethingGreat('test','.verzendkosten')

DoSomethingGreat('vraag','.eigenschappen')

适用的地方

编辑:根据评论,

如果要在加载某些页面时执行这些操作,请使用jQuery dom ready函数。

将其放在要调用它的页面中

$(function(){
   DoSomethingGreat('vraag','.eigenschappen')
});

答案 1 :(得分:0)

查看http://api.jquery.com/jQuery.when/

您将能够使用他们的示例来实现此目标,例如:

$.when(
    $.getJSON('http://shop.com/test/?format=json'),
    $.getJSON('http://shop.com/vraag/?format=json')
).then(function () {
    // Do stuff with data
});

使用.then()定义的函数将在getJSON调用完成后执行。

这假设您要“合并”从两个

返回的数据

答案 2 :(得分:0)

如果您的服务器可以将两个响应组合成一个,那么是。否则,您需要在jQuery中使用Deferred功能。

响应可能是这样的:

{"data": {
    "kosten": "whatever you would have returned from /test/",
    "eigenschappen": "whatever you would have returned from /vraag/"
}}

然后您的JavaScript可以访问这些:

$.each(data.kosten.textpage, ...)

$.each(data.eigenschappen.textpage, ...)

答案 3 :(得分:0)

好的,组合脚本可以通过多种不同的方式完成。最简单的解决方案是使请求URL的变量部分在脚本中真正变量。

但这取决于你所寻找的结果。