jQuery:获取成功函数的url

时间:2012-03-22 21:18:37

标签: jquery ajax

我想从服务器中检索数据后,从jQuery成功函数中获取url。不幸的是,成功函数采用的三个参数不会暴露原始URL:

success: function(data, statusText, jqhxr)

我转储了jqhxr变量,但在那里找不到url。我需要url的原因是因为我通过循环一次调用几次,因此我不知道哪个Ajax调用会回来。使它成为异步调用也无济于事。

提前谢谢!

4 个答案:

答案 0 :(得分:16)

成功函数内的

this.url将起作用,因为this引用函数的当前上下文,并且因为success函数是您传递给.ajax()的设置对象的一部分它将访问url属性。

请参阅描述js scope.ajax()的文章。

答案 1 :(得分:1)

你的意思是让同步电话没有帮助......?

我的建议是在你要回来的数据中设置一个参数,以确定如何处理它,如果你正在循环一堆AJAX调用。但实际上你应该循环通过多个调用,如果你做得对,你应该能够发送足够的参数和数据,以便在一次调用中全部返回,这减少了客户端和服务器之间的数量,服务器和数据库,然后服务器返回客户端。

答案 2 :(得分:1)

你可以在进行ajax调用时使用上下文。

$.ajax({
  url: "test1.html",
  context: $("#call1")
});

$.ajax({
  url: "test2.html",
  context: $("#call2")
});

<div id="call1" class="hidden" data-url="whatever1"></div>
<div id="call2" class="hidden" data-url="whatever2"></div>

然后在

success: function(data, statusText, jqhxr) {
    var url = $(this).data("url");
}

这样你就可以获得任何数据,而不仅仅是网址。将您想要访问的任何数据放在相应的div元素中。

答案 3 :(得分:1)

如果通过jQuery .ajax()或.post()或.get()调用服务器脚本,那么即使使用循环,也必须在成功回调函数中使用url。这是因为您必须将url传递给所有这三个方法,并且返回的结果特定于您传递的url。

例如:

for(var i=0; i<10; i++) {
    url = "action_remote_" + i + ".php";
    $.ajax({
        type:'POST',
        url: url,
        data:$('#' + str_form_id).serialize(),
        success: function(response) {
            alert(url);
        }
    });
}

除非我没有正确理解你......