2011-04-11 26 views
3

我有这样的代码:jquery如何将json数据发送到多个链接?

$.ajax({ 
    type: "POST", 
    data: JSON.stringify(formData), 
    dataType: "json", 
    url: "http://www.test.com/users/" + get_back + "", 
    success: function(t){ 
    alert(t); 
    } 
}); 

我想知道我怎么可以张贴到多个环节?我是否必须创建另一个$.ajax POST或者我可以将更多url字段添加到相同的POST中?

感谢

回答

3

您必须多次执行此操作,其中一个用于要发送到的每个URL。但也有快捷键:

var urls = ["http://www.test.com/users/", "http://www.example.com/users/", "http://www.test.org/users/"] 

$.each(urls, function(index, value) { 
    $.ajax({ 
     type: "POST", 
     data: JSON.stringify(formData), 
     dataType: "json", 
     url: value + get_back + "", 
     success: function(t){ alert(t); } 
    }); 
}); 

我们把所有您想要发布的URL在JavaScript数组,然后使用jQuery's $.each通过他们迭代并做一个AJAX POST到每一个。

+0

工作。谢谢。如果我想动态更改'data:'属性呢? – Patrioticcow 2011-04-11 23:30:23

+0

我的答案将允许您选择任何您喜欢的默认设置,并根据需要覆盖它们。 :) – theazureshadow 2011-04-11 23:47:29

+0

很高兴我能帮上忙。你可以构建一个JSON对象数组,每个对象都有一个data和一个url属性并遍历这些对象。 – Adam 2011-04-12 00:19:39

0

你必须做单独调用每个网址,请尝试使用$。每到多次调用相同的代码。

1

您不能添加其他模式字段。 JavaScript对象文字(例如{foo:'bar'})对于每个键只能有一个值。浏览器倾向于将{url:'http://example.com', url:'http://example.com/page2'}解释为{url:'http://example.com/page2'}

jQuery的ajax功能只发送一个单一的ajax请求。下面的代码将让你创建一个默认请求对象,并覆盖其成员,你认为合适:

function createAjaxer(o) { 
    var defaults = $.extend({}, o); 
    return { 
    send: function(o2) { 
     var instance = {}; 
     $.extend(instance, defaults, o2); 
     $.ajax(instance); 
    } 
    } 
} 

可以按如下方式使用它:

var a = createAjaxer({ 
    type: 'post', 
    dataType: 'json', 
    success: function() { console.log(arguments); } 
}); 

a.send({ 
    data: 'yar=5', 
    url: 'http://stackoverflow.com' 
}); 

a.send({ 
    url: 'http://stackoverflow.com' 
}); 

这允许您设置合理的默认值。基本的想法是可重复使用的各种目的。

相关问题