我想从服务器中检索数据后,从jQuery成功函数中获取url。不幸的是,成功函数采用的三个参数不会暴露原始URL:
success: function(data, statusText, jqhxr)
我转储了jqhxr变量,但在那里找不到url。我需要url的原因是因为我通过循环一次调用几次,因此我不知道哪个Ajax调用会回来。使它成为异步调用也无济于事。
提前谢谢!
答案 0 :(得分:16)
this.url
将起作用,因为this
引用函数的当前上下文,并且因为success函数是您传递给.ajax()
的设置对象的一部分它将访问url属性。
答案 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);
}
});
}
除非我没有正确理解你......