为什么在jquery中成功调用ajax后才加载此函数?

我在这里使用的教程 ,曾经在上个月工作,但现在不是。 我已复制下面的相关代码。

$(document).ready(function () { $.ajax({ type: "GET", url: "http://papermashup.com/demos/jquery-xml/books.xml", dataType: "xml", success: xmlParser }); alert("123"); }); function xmlParser(xml) { alert("456"); $('#load').fadeOut(); $(xml).find("Book").each(function () { $(".main").append('
' + $(this).find("Title").text() + '
' + $(this).find("Description").text() + '
Published ' + $(this).find("Date").text() + '
'); $(".book").fadeIn(1000); }); }

问题是在成功的ajax请求之后没有调用xmlParser()函数。 它显示123警报但不显示456警报。 我做错了什么,或者教程错了吗?

我在这里包含了一个相关的jsfiddle。 http://jsfiddle.net/desbest/nwt3unxu/

为什么在jquery中成功调用ajax后才加载此函数?

确实如此。

从JavaScript错误控制台:

XMLHttpRequest无法加载http://papermashup.com/demos/jquery-xml/books.xml 。 请求的资源上不存在“ Access-Control-Allow-Origin ”标头。 因此,不允许来源“ http://fiddle.jshell.net ”访问。

您的请求不成功 (至少在Ajax术语中,它是严格的HTTP术语,但您请求数据的站点未授予浏览器从JSFiddle向JavaScript提供数据的权限)。