4

我的问题是:在 Firefox 中我没有得到回应。在即它工作正常。我想要一个本地脚本的 ajax 调用,以纯文本或其他方式获取一些信息。但它不会工作。我认为在这一点上跨脚本不应该是一个问题,或者?

javascript代码很简单:

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代码:

<?php
   header('Content-type: text/xml'));
   echo "test";
?>
4

4 回答 4

2

试试var targetUrl = "/jQueryProxy.php";
另外,您可以检查 Firefox 的 javascript 控制台以查找错误:Ctrl++ShiftJ

您还可以尝试通过添加处理程序(源代码)来查找 jQuery 的 Ajax 错误消息:

error:function (xhr, ajaxOptions, thrownError){
    alert(xhr.status);
    alert(xhr.statusText);
    alert(thrownError);
 }  

更新:我做了一些测试,似乎 Firefox 阻止了 Ajax 从本地文件到网络(同样是 localhost),但没有抛出异常。使用alert($('*', param1).text());atsuccess显示当前文档的内容,这很奇怪。
将 XML 作为本地文件也不起作用,FF 和 IE 的行为是不一致的——它们的行为非常不同。
您最好的选择是将 html 放在服务器 (localhost) 上,与您的 xml 文件位于同一端口(此处为 80)。
此外,当您的 xml 有效时,请考虑添加dataType:'xml'.

于 2009-07-29T06:57:27.030 回答
1

这是因为内容类型是text/xml但它不是有效的 XML。

如果您希望它是 XML,请将 echo 更改为:

<?xml version="1.0" encoding="UTF-8"?>
<foo>test</foo>
于 2009-07-29T06:59:02.347 回答
1

它是一个 XSS 问题。通常,本地 html 页面比公共 html 页面更沙盒化。

于 2009-07-29T08:10:42.920 回答
0

这似乎适用于FF:

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 看起来像这样:

<?php
   header('Content-type: text/xml');
   echo '<?xml version="1.0" encoding="UTF-8"?><foo>test</foo>';
?>

最好的祝福,

比约恩

于 2009-07-29T07:59:00.493 回答