1

我不知道这是否可能,因为我对 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

4 回答 4

1

不知道你说的组合是什么意思。我假设您想摆脱两个片段中的重复代码。

将其包装成一个通用的可重用函数,并将页面名称和类名称作为参数传递

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就绪功能。

把它放在你想调用它的页面中

$(function(){
   DoSomethingGreat('vraag','.eigenschappen')
});
于 2012-05-28T02:23:50.340 回答
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 调用完成后执行。

这是假设您想要“组合”从两者返回的数据

于 2012-05-28T02:23:08.530 回答
0

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

响应可能是这样的:

{"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, ...)
于 2012-05-28T02:23:21.073 回答
0

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

但是,它确实取决于您要寻找的结果。

于 2012-05-28T02:23:57.907 回答