我正在使用我在PHP中编写的本地代理脚本进行一些跨域Ajax调用。 Ajax调用的Javascript代码(简化版本)如下:
<script src="jquery/jquery-1.10.2.min.js"></script>
<script language="Javascript">
function link1 ()
{
$.ajax ({url:"proxy.php", data:{url:"http://www.microsoft.com/"}})
.done (function (h) { $("#ResponseBody").html(h); })
.fail (function () { alert ("Ajax failed..."); });
}
function link2 ()
{
$.ajax ({url:"proxy.php", data:{url:"http://www.yahoo.com/"}})
.done (function (h) { $("#ResponseBody").html(h); })
.fail (function () { alert ("Ajax failed..."); });
}
</script>
<a href="javascript:link1();">link 1</a><br>
<a href="javascript:link2();">link 2</a><br>
<div id="ResponseBody"></div>
因此,在这个例子中它非常简单。我有两个函数,每个函数对我的代理脚本执行Ajax查询,并向其传递一个不同的远程URL。您可以单击其中一个链接来调用其中一个功能。无论我点击哪一个,它都是第一次工作。但是第二次点击一个链接(同一个链接或另一个链接),它就失败了。
我确实尝试删除显示Ajax结果的.done处理程序中的代码,然后它突然开始工作,虽然没有显示结果但是失败了执行Ajax查询的目的。我还尝试使用对服务器上两个不同的纯HTML文件的引用来替换对代理脚本的引用,并且它工作正常。
有没有人知道为什么这些查询只能在第一次工作,而不是在那之后呢?