jQuery:$.ajax-inside-if语句一直被调用(不应该!)
大家早上好jQuery:$.ajax-inside-if语句一直被调用(不应该!),jquery,ajax,if-statement,Jquery,Ajax,If Statement,大家早上好 编辑:对于书写错误,我很抱歉!这个想法是为了展示一个最小的例子,我在这里特别介绍了它。但其主要思想应该是可以理解的 我还尝试将“外部”ajax结果存储到一个数组中。这很好,但问题是一样的。我想问题在于异步处理不同的ajax调用。正因为如此,我得到的结果有时是“两次”,而不是两个不同的结果,而且我得到结果太晚了 我想我必须使用队列或者类似的东西。 我的jQuery脚本有问题。最小值如下所示: // - First call "outer" .ajax $.ajax({ type:
编辑:对于书写错误,我很抱歉!这个想法是为了展示一个最小的例子,我在这里特别介绍了它。但其主要思想应该是可以理解的 我还尝试将“外部”ajax结果存储到一个数组中。这很好,但问题是一样的。我想问题在于异步处理不同的ajax调用。正因为如此,我得到的结果有时是“两次”,而不是两个不同的结果,而且我得到结果太晚了 我想我必须使用队列或者类似的东西。 我的jQuery脚本有问题。最小值如下所示:
// - First call "outer" .ajax
$.ajax({
type: "GET", url: "FILE.xml", dataType: "xml",
success: function( outerxml ) {
$( outerxml ).find("content").each( function() {
var x = $(this).attr('id'); // - Get id attribute
if ( x == 'doit' )
{
$.ajax({
type: "GET", url: "FILE.xml", dataType: "xml",
success: function( innerxml ) {
alert("inner ajax");
...
} // - End of inner success
}); // - End of inner .ajax
}
alert("end of if statement");
}); // - End .find("content")
} // - End outer success
}); // - End outer .ajax
请注意,if条件为“false”(x!=“doit”)。问题是脚本运行到if语句的末尾(我得到了“end of if statement”-alert),然后脚本调用ajax(但它不应该)。我在“if语句结束”警报之后得到“内部ajax”警报
我根本找不到解决问题的办法。有什么提示吗?:)求你了
非常感谢 一行是
if
语句,下一行是大括号。我认为您在这里遇到了JavaScript最邪恶的“功能”:
基本上,你有
if ( x == 'doit' )
{
// code
}
但它被解析为
if (x == 'doit'); // <-- note semicolon inserted here
// Now this block is logically disconnected from the if statement
{
// code
}
if(x=='doit');//对象内部的type=“GET”
是什么?在这两种情况下都应该是类型:“GET”
。此外,此处缺少括号})/-End.find(“content”)
。此外,我不确定成功
回调中绑定了什么。在调用第一个$.ajax
之前,最好将$(this)
存储在变量中。如果收到“内部ajax”警报,则会发送ajax请求。因此,对于find(“content”)
列表中的某些项,x=='doit'
必须为true。您好,能否显示您正在获取的文件.xml
的内容?至于您对alert
s的顺序的评论:我很确定这是预期的行为,因为ajax调用是异步执行的。因此,我的猜测是:xml文件中的第一个
节点确实具有“doit”id,这会发生:1)执行ajax调用,2)触发“if语句结束”警报,3)响应到达并调用success函数,从而产生“内部ajax”警报。但可以肯定的是。。。我们必须看到XML:)