jquery ajax call not working?! firefox or xss problem?
我的问题是:在火狐里,我没有任何反应。在IE中,它工作得很好。我希望对本地脚本进行Ajax调用,以获取纯文本或其他形式的信息。但它不起作用。我认为此时交叉脚本不应该是个问题,还是?
javascript代码很简单:
1 2 3 4 5 6 7 8 9 10 11 12 | var targetUrl ="http://localhost/jQueryProxy.php"; var parameters =""; // later $.ajax({ type:"GET", async: true, url: targetUrl, data: parameters, success: function(param1, param2){ alert(param1); } }); |
还有PHP代码:
1 2 3 4 | <?php header('Content-type: text/xml')); echo"test"; ?> |
试试
您还可以尝试通过添加一个处理程序(源代码)来查找jquery的Ajax错误消息:
1 2 3 4 5 | error:function (xhr, ajaxOptions, thrownError){ alert(xhr.status); alert(xhr.statusText); alert(thrownError); } |
更新:我做了一些测试,似乎是火狐阻止了Ajax从本地文件到网络(也就是本地主机),但没有抛出异常。在
这是一个XSS问题。通常,本地HTML页面比公共HTML页面更沙盒化。
这是因为内容类型是
如果希望它是XML,请将echo更改为:
1 2 | <?xml version="1.0" encoding="UTF-8"?> <foo>test</foo> |
这似乎适用于FF:
1 2 3 4 5 6 7 8 9 10 11 12 | var targetUrl ="http://localhost/jQueryProxy.php"; var parameters =""; // later $.ajax({ type:"GET", async: true, url: targetUrl, data: parameters, success: function(param1, param2){ alert($(param1).find("foo").text()); } }); |
PHP看起来是这样的:
1 2 3 4 | <?php header('Content-type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8"?><foo>test</foo>'; ?> |
最好的问候,
比约恩