为了使该代码正常工作,事件需要是同步的,换句话说,在$
.ajax调用中设置async:false。出现问题是因为ajax通常是异步的,这意味着当您执行警报时,请求可能会或可能不会完成。不过,通常情况下,它不会比执行函数调用花费更长的时间来获取页面。因此,通过设置async:false,您可以告诉jquery(和ajax处理程序)等待页面加载完成,然后再尝试警告数据。实现相同效果的另一种方法是执行以下操作:
var myData;function fin(data) { myData = data; alert(myData);}$.ajax({ type: 'GET', url: $(this).attr('source'), dataType: 'html', success: fin});这种方法可能比将async设置为false更好,因为它不会在等待页面加载时使浏览器挂起。但是,异步编程并不是容易学习的东西,因此许多人会发现使用async:false会更容易。



