组合两个jQueryAjax脚本

组合两个jQueryAjax脚本,jquery,Jquery,我不知道这是否可行,因为我对JSON和jQuery还很陌生。以下是我的两个脚本: $.getJSON('http://shop.com/test/?format=json', function(data){ $.each(data.textpage, function(index, text){ $('<div></div>').html('' + text + '').appendTo('.verzendkosten'); }); }); $.getJ

我不知道这是否可行,因为我对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/test/?format=json,函数(数据){
$.each(data.textpage,函数(索引,文本){
$('').html(''+文本+'').appendTo('.verzendkosten');
});
});

$.getJSON('http://shop.com/vraag/?format=json,函数(数据){
$.each(data.textpage,函数(索引,文本){
$('').html(''+文本+'').appendTo('.eigenschappen');
});
});
有可能把这两者结合起来吗?这两个脚本都可以工作,但我很好奇如何或是否可以将它们结合起来。

看一看

您将能够使用他们的示例来实现这一点,例如:

$.when(
    $.getJSON('http://shop.com/test/?format=json'),
    $.getJSON('http://shop.com/vraag/?format=json')
).then(function () {
    // Do stuff with data
});
用.then()定义的函数将在两个getJSON调用完成后执行

这是假设您希望“合并”从这两个数据库返回的数据,请查看

您将能够使用他们的示例来实现这一点,例如:

$.when(
    $.getJSON('http://shop.com/test/?format=json'),
    $.getJSON('http://shop.com/vraag/?format=json')
).then(function () {
    // Do stuff with data
});
用.then()定义的函数将在两个getJSON调用完成后执行


这是假设您希望“合并”从这两个响应返回的数据,如果您的服务器可以将两个响应合并为一个,则是。否则,您将需要在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, ...)

如果您的服务器可以将两个响应合并为一个,则是。否则,您将需要在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, ...)

不知道你说的组合是什么意思。我假设您希望消除这两个代码段中的重复代码

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

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);
     });
   });
}

如适用

编辑:根据评论

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

把这个放在你想叫它的地方

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

不知道你说的组合是什么意思。我假设您希望消除这两个代码段中的重复代码

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

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);
     });
   });
}

如适用

编辑:根据评论

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

把这个放在你想叫它的地方

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

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


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

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


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

你能澄清一下“联合”是什么意思吗?你所说的“联合”到底是什么意思?您正在向两个不同的URL发出两个请求。你不能从中提出一个请求。JSON在这里似乎没有任何关联。你能澄清一下“联合”是什么意思吗?你说的“联合”到底是什么意思?您正在向两个不同的URL发出两个请求。你不能从中提出一个请求。JSON在这里似乎没有任何关联。我要建议的解决方案是下面粘贴的Shyju。无论如何,这会节省我一些时间;)祝你好运,伙计。我要建议的解决方案就是下面贴的Shyju。无论如何,这会节省我一些时间;)祝你好运,伙计。我的意思是组合确实是重复的代码!我想知道,当两个函数“看起来”相同时,应该可以将它们结合起来。@Shyju:我正在尝试这一个,看起来是提供的最佳工作解决方案。但是如何调用特定页面上的函数呢?可能是一个愚蠢的问题:(我已经将代码放在“main.js”文件中。但是如何在不同的页面上启动函数?将其绑定到控件。何时调用此函数?在按钮上单击?下拉选项更改?仅当页面打开时不可以!例如,当我打开产品页面时,DoSomethingGreat('test','verzendkosten')应该放在一个名为shipping costs的选项卡页面中。当我打开一个常见问题页面时,应该显示DoSomethingGreat('vraag','eigenschappen')。等等……你说的“绑定到你的控件”到底是什么意思?你可能有一个例子吗?不管怎样,谢谢你的帮助,你已经给了我很多有趣的信息!@JaapVermoolen:使用Dom ready事件。检查我的更新答案。我的意思是组合确实是重复的代码!我想知道当两个函数“看”的时候同样,应该可以将它们结合起来。@Shyju:我正在尝试这一个,看起来是提供的最佳工作解决方案。但是我如何在特定页面上调用该函数?可能是一个愚蠢的问题:(我已经将代码放在了“main.js”中)文件。但如何在不同页面上启动该函数?将其绑定到控件。何时要调用此函数?单击按钮?下拉选项更改?仅当页面打开时才更改?例如,当我打开产品页面时,然后DoSomethingGreat('test','verzendkosten'))应该放在一个名为shipping costs的选项卡页面中。当我打开一个FAQ页面时,应该显示DoSomethingGreat('vraag','Egenschappen')。等等……你说的“绑定到控件”到底是什么意思?你可能有一个例子吗?无论如何,谢谢你的帮助,你已经给了我很多有趣的信息!@JaapVermoolen:使用Dom就绪事件。检查我的更新答案。我会尝试一下!谢谢你的答案,我会让你知道这件工作我会尝试一下!谢谢你的回答,我会让你知道的