【问题标题】:Problem parsing XML output (PHP/JQuery)解析 XML 输出的问题 (PHP/JQuery)
【发布时间】:2009-11-17 22:35:28
【问题描述】:

我沮丧地挠了挠头,但我找不到答案。 我是 Ajax 新手,我正在尝试这个简单的脚本:

这是我的代码:

JAVASCRIPT:

$(document).ready(function(){    
    $("#toggle_album").click(function () {  
        $.post('backend/load_album_thumbnails.php', {  
            text: 'my string',  
                number: 23  
        }, function(xml) {  
                var timestamp = $(xml).find("time").text();
                alert(xml);
                alert(timestamp);
        });  
    });
});  

警报(xml)返回:

     <? xml version="1.0"?>
<response status="ok">
<time>23:33:13</time>
<string>my string</string>
</response>

警报(时间戳)返回空

我也试过了:

时间戳 = $("time",xml).text();

结果相同。

我在 xml 开始标记中添加了额外的空间,因为它在 stackoverflow 上消失了。我能想到的这个错误的唯一原因是返回数据不是 XML 格式,但我不知道为什么会这样。

感谢任何答案。

【问题讨论】:

  • 我刚刚尝试了您的逐字示例代码,它可以正常工作。我还尝试将错误的内容类型与 xml 一起发回,并在开始时添加随机空格,但它仍然可以无缝工作。您能否添加更多上下文信息(例如,使用的服务器、使用的浏览器等)以及您正在使用的 xml 文件的链接?
  • 如果您在 Firefox 3.5+ 中测试此代码,它将起作用。但是它会在 IE8 中失败。
  • 我总是忘记在 IE 中进行测试。只是出于好奇,您是否在其他浏览器上测试过这段代码?
  • 我在 Opera 10 (Mac)、Safari 4 (Mac)、Chrome (XP) 和 FF2.0 (XP) 中测试了原始代码。所有工作都如我们的朋友马蒂斯所期望的那样。 IE 6、7 和 8 都按照问题中的描述进行响应。
  • 天哪,你们摇滚!感谢所有的投入。我没有在 IE7 以外的任何其他浏览器中测试它,恐怕我的网页设计时代是从 IE 成为编码方式的时候开始的,我经常忘记在其他浏览器中检查它(即使我已经安装了它们)。我会在我上班时研究它。谢谢!

标签: jquery xml ajax parsing


【解决方案1】:

你是对的,它不起作用的原因是返回数据不是 XML 格式的。通常,如果 Web 服务器不返回 text/xml Content-Type 标头,则某些浏览器(以及因此 jQuery)不会打扰解析 XML。

要让它发挥作用,您的选择是:

  1. 修改您的响应标头以使用 PHP's header() function 指定 XML 格式,然后更改您的响应以使其使用格式正确的 XML。执行此操作的代码如下所示:

    header('Content-Type: text/xml; charset=UTF-8'); echo "$mystring响应>";
  2. 改变您在 JavaScript 代码中处理响应的方式(例如,编写一个简单的正则表达式解析器,尽管 this is considered bad for your health

  3. 将您的响应更改为 JSON 之类的内容,以便您可以使用 jQuery's $.getJSON() method 发送请求并将响应解析为 JavaScript 对象 (PHP has some very nice built-in JSON functions)。

【讨论】:

  • 我建议也使用 JSON,编码解析更容易。
  • 1)。将很快尝试! 2)。哈哈! 3)。是的,我考虑过 JSON,但脚本最终会返回一大堆图像信息,这使得 XML 格式非常理想。
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2011-10-23
相关资源
最近更新 更多