【发布时间】:2011-05-05 16:12:24
【问题描述】:
我正在使用 jQuery 1.4.3 对 ASP.NET MVC 2 休息服务进行 ajax 调用。由于这个休息服务在不同的域上,我必须使用 jsonp。我遇到的问题是在从 jQuery 1.4.2 升级到 1.4.3 之后,当 jQuery 尝试删除为 jsonp 回调注入的标记时,我现在收到 javascript 错误。来自其余服务的数据恢复正常。
查看 jQuery 1.4.3 文件后,我发现错误发生在这一行:
if ( head ) {
head.removeChild( script );
}
在 firebug 中调试该部分后,这就是发生的事情。在第一次 ajax jsonp 调用 getDetail() 方法后,“script”变量在“head”变量中具有以下值,因此调用“head.removeChild(script);”成功,脚本标签被删除。
<script src="http://localhost:63505/Locations/Detail/445?callback=fetchLocationInfoWindowCallback"></script>
在使用 ajax jsonp 再次调用同一方法 getDetail() 时,在调试器中查看,“script”变量仍然具有以下值,但是“head”变量不再包含此脚本标记。
<script src="http://localhost:63505/Locations/Detail/445?callback=fetchLocationInfoWindowCallback"></script>
相反,这个“脚本”变量应该具有包含在“头”变量中的以下值。
<script src="http://localhost:63505/Locations/Detail/335?callback=fetchLocationInfoWindowCallback"></script>
【问题讨论】: