php - jQuery 数据类型 :

标签 php jquery xml

我有一个关于 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 中,我没有结果。但是,如果我将 dataType 更改为 "html",我会在 Firefox 和 Chrome 中得到正确的结果,然后在 IE 中得到无结果。'

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

jQuery 手册中解释的 dataType: 选项似乎足够清楚。我什至尝试将 dataType 排除在外

(per manual: If none is specified, jQuery will try to infer it based on the MIME type of the response)

我还尝试了多种类型 - 例如“文本 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() 回调的其他建议。谢谢。

非常感谢您的帮助!!

最佳答案

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

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

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

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

关于php - jQuery 数据类型 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937656/

相关文章:

php - 如何验证嵌套数组并在 laravel 中显示消息

php - 在 PHP 5.2.x 中使用 Docker 环境变量

javascript - 如何将未选择的值从一个下拉列表填充到表中的另一个下拉列表?

xml - 我如何拆分 <xsl :foreach> into multiple parts?

java - Android 填屏不支持 S3 S4 屏幕分辨率

python xml : xpath for elements with childer with specific attribute values

php - 如何在使用 PHP 从 HTML 创建的 DOC 文件中包含 CSS

javascript - bootstrap formvalidation.io 远程验证器 MySQL PHP

javascript - Chrome API 不会在嵌套回调中注入(inject) cookie

javascript - 如何使用 javascript 导航到正确的 div?