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); } }); }
除非我没有正确地理解你......