大家早上好
编辑:抱歉书面错误!这个想法是展示一个最小的例子,我在这里专门给它倾斜。但主要观点应该是可以理解的。
我还尝试将“外部”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语句的末尾(我得到“if语句的结尾”-alert)和脚本调用ajax的AFTERWARDS(但它不应该)。在“if语句结束”警告之后,我得到了“内部ajax”-alert。
我根本找不到解决方案或问题。有一些提示吗? :)拜托。
非常感谢!
答案 0 :(得分:0)
你在一行上有一个if
语句,在下一行有一个左大括号。我认为你在这里遇到了JavaScript最邪恶的“功能”:automatic semicolon insertion。
基本上,你有
if ( x == 'doit' )
{
// code
}
但它被解析为
if (x == 'doit'); // <-- note semicolon inserted here
// Now this block is logically disconnected from the if statement
{
// code
}
故事的寓意是要非常小心你在JavaScript代码中引入换行符的位置,因为语言希望尽可能将行尾作为语句结束处理。