jQuery.ajax(1.4.3)jsonp调用不从头标记中删除回调脚本

时间:2010-11-05 15:27:31

标签: jquery rest service jsonp

我正在使用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);” suceeds和脚本标签被删除。

<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>

相反,此“脚本”变量应具有以下值,该值包含在“head”变量中。

<script src="http://localhost:63505/Locations/Detail/335?callback=fetchLocationInfoWindowCallback"></script>

1 个答案:

答案 0 :(得分:2)

jQuery 1.4.4 RC解决了这个问题。