【问题标题】:jquery ajax call not working?! firefox or xss problem?jquery ajax 调用不工作?!火狐还是xss的问题?
【发布时间】:2010-11-14 23:11:44
【问题描述】:

我的问题是:在 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";
?>

【问题讨论】:

  • 有什么问题?虽然你用了五个问号,但我看不到任何问题。
  • 我删除了几个问号。

标签: jquery ajax firefox proxy call


【解决方案1】:

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

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

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

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

【讨论】:

  • 就是这样。我也认识到:带有 js 的调用 html 必须在本地主机上!
【解决方案2】:

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

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

<?xml version="1.0" encoding="UTF-8"?>
<foo>test</foo>

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      这似乎适用于 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>';
      ?>
      

      最好的问候,

      比约恩

      【讨论】:

      • 我的主要问题是使用 javascript 调用的 html 不在服务器上...我只是双击它。虽然 html 在 localhost 根目录中,但所有 ajax 的东西都可以工作!谢谢大家
      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 2023-03-22
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2011-06-04
      相关资源
      最近更新 更多