【发布时间】: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() 回调的其他建议。谢谢。
非常感谢您的帮助!
【问题讨论】: