【问题标题】:jQuery dataType:jQuery 数据类型:
【发布时间】:2011-12-17 18:27:33
【问题描述】:

我有一个关于 jQuery 数据类型的奇怪问题。

我有一个非常简单的 PHP 程序,它返回(回显)一个 XML 文件(字符串)。看起来像这样:

$xmlFile = "sampleXMLFile.xml";
$xml = simplexml_load_file($xmlFile);     
echo $xml->saveXML();

我的客户端/javascript 代码通过 ajax 调用 php 程序:

$(document).ready(function()
{
    $.ajax({
    type: "GET",
    url: "myPHPFile.php",   
    dataType: "xml",
    success: myCompleteFunction,
    complete: mySuccessFunction,
    failure: function(data) {
        alert("Problem getting XML");
        } });
});

“myCompleteFunction”获取 XML 并简单地将第一个节点写入 div 元素,如下所示:

function myCompleteFunction(xml)
{
      $(xml).find("Row").each(function()
      {
        $("#result3").append($(this).attr("myrow"));
      });
}

好的 - 在 IE 8 中,这可以正常工作。在 Firefox 和 Chrome 中,我得到 no results。但是,如果我将 dataType 更改为 "html",我会在 Firefox 和 Chrome 中得到正确的结果,然后在 IE 中得到 no results。'

继续为此而疯狂。我真的需要为浏览器添加条件逻辑吗?

jQuery 手册中解释的 dataType: 选项似乎很清楚。我什至试图离开 dataType

(根据手册:如果没有指定,jQuery 将尝试根据 MIME 推断它 响应类型)

我也尝试了多种类型 - 例如“文本 xml”。不好。

有人遇到过这个问题吗?任何方向将不胜感激。

谢谢。

附言我知道我可以在 jQuery 中读取 XML 文件。从 PHP 程序生成的 XML 将更加复杂。我只是用它作为例子。


更新:

嗯,我看到了 Phil 关于在发送 XML 数据之前生成某些东西的评论。当然没有什么明显的。我删除了第一行 <?php 上方的空白行。这以某种方式奏效了!在我看来仍然很奇怪。所以我的新的、更紧凑的 PHP 代码现在是:

<?php
// Load XML   
$xmlFile = "sample.xml";
$xml = simplexml_load_file($xmlFile);     
header('Content-type: text/xml'); 
echo $xml->saveXML(); 
?>

我也会注意您关于正确处理 jQuery.ajax() 回调的其他建议。谢谢。

非常感谢您的帮助!

【问题讨论】:

    标签: php jquery xml


    【解决方案1】:

    坚持使用“xml”dataType 并将其添加到您的 PHP 文件中 echo 之前...

    header('Content-type: text/xml');
    

    另外,您似乎混淆了一些 jQuery.ajax() 回调。

    • 使用success处理返回的数据。
    • 使用error(jqXHR, textStatus, errorThrown)(不是failure)来处理HTTP错误
    • successerror 回调执行后使用complete 执行一些任务

    【讨论】:

    • 试过了,没有运气
       $xmlFile = "sample.xml"; $xml = simplexml_load_file($xmlFile); header('内容类型:文本/xml');回声 $xml->saveXML(); 
      得到这个并且没有结果。警告:无法修改标头信息 - 标头已由
      发​​送
    • @Rob 在这种情况下,在发送 XML 数据之前,您有一些东西会产生输出。你绝对不想要这个。此外,编辑您的问题以添加更多代码/消息。不要尝试将其发布在 cmets 中
    • 嗯,我看到了 Phil 关于在发送 XML 数据之前生成某些东西的评论。当然没有什么明显的。我删除了第一行 &lt;?php 上方的空白行。这以某种方式奏效了!在我看来仍然很奇怪。我还会注意您关于正确处理 jQuery.ajax() 回调的其他建议。谢谢。非常感谢您对此的帮助!
    猜你喜欢
    • 2012-10-11
    • 2014-09-21
    • 2010-11-17
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2013-04-10
    • 2012-03-27
    相关资源
    最近更新 更多