【问题标题】:Ajax not returning values to chrome but is to FFAjax 没有将值返回给 chrome,而是返回给 FF
【发布时间】:2010-06-04 07:48:06
【问题描述】:

我是 Ajax 新手,一直在学习 JQuery.com 的教程。我已经设置了一个非常简单的脚本,当单击 h2 元素时,将调用一个 php 脚本,该脚本返回一些 xml,JQuery 使用这些 xml 替换当前的 h2 内容。以下是javascript内容:

$(document).ready(function () {

$('h2').click(function(e){
  e.preventDefault();
  var user = $(this);
  $.post("ajax.php", {id: "1"}, function(xml) {
    // format result
    var result = [
      "Thanks for rating, current average: ",
      $("average", xml).text(),
      ", number of votes: ",
      $("count", xml).text()
    ];
    // output result
    $(user).html(result.join(''));
  } );

});
});

这里是 php 脚本:

<?php 
$av = 5;
$xml = "<ratings><average>$av</average><count>$av</count></ratings>";
header('Content-type: text/xml'); 
echo $xml; 
?>

在 Firefox 中,我得到了预期: "感谢评分,当前平均:5,票数:5"

但在 Chrome 中我得到: "感谢评分,当前平均: ,票数:"

如您所见,Chrome 无法识别 xml 中传回的任何内容。我在一个普通的 Dreamhost 托管帐户上运行它,我没有对服务器进行任何添加。

任何帮助将不胜感激。

问候 卢克

【问题讨论】:

    标签: jquery google-chrome


    【解决方案1】:

    请检查 chrome 中变量xml 的内容。如果为空,请尝试设置 明确的数据类型:

    $.post("ajax.php", {id: "1"}, function(xml) {
    // format result
    var result = [
      "Thanks for rating, current average: ",
      $("average", xml).text(),
      ", number of votes: ",
      $("count", xml).text()
    ];
    // output result
    $(user).html(result.join(''));
    }, 'xml');
    

    【讨论】:

    • 嗨 jAndy,感谢您的回复,我尝试在 FF 和 Chrome 中运行您对脚本的添加,FF 只是返回与往常一样的内容,但 chrome 现在什么也不做,当我执行时我没有收到任何错误检查元素,如果这是一个愚蠢的答案,对不起,请与我裸露。我不确定如何检查 xml 变量,我尝试了 alert(xml),它只返回当前页面的整个 html。
    • 嗨@jAndy,最后是愚蠢的错误,FF 找到 ajax.php 没有问题,但似乎 chrome 需要它是 /ajax.php,现在它在两种浏览器中都可以使用。感谢您的建议,阅读有关 dataTypes 并指定它们很有趣。很抱歉浪费了您的时间
    猜你喜欢
    • 1970-01-01
    • 2017-05-06
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多