jQuery:获取成功函数的url

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

success: function(data, statusText, jqhxr)

我转储了jqhxr变量,但在那里找不到url。 我需要url的原因是因为我通过循环同时进行多次调用,因此我不知道哪个Ajax调用会回来。 使它成为异步调用也没有帮助。

先感谢您!

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

请参阅描述js范围和.ajax()的文章。

你的意思是让它同步通话没有帮助……?

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

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

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

然后在

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

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

如果通过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); } }); } 

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