0

我正在尝试加载 XML 以填充搜索框。我的代码在静态 xml 文件中运行良好,但我需要加载 PHP 文件以根据数据库中的数据生成动态 XML 文件。

我知道 PHP 文件在浏览器中加载时会生成 XML,并且页面源会显示正确的节点等,但是当我在 JavaScript 中引用 .php 文件时,它无法加载或显示错误...使用 . xml 文件(它是 php 输出源的副本)它加载得很好。

我希望有人检查我是否正确编码了 XML 或在我的 JavaScript 中遗漏了某些内容……我们将不胜感激。

JS

var myArr = [];
$.ajax({            
     url: "people.php", // change to full path of file on server
     type: "GET",
     dataType: "xml",
     success: parseXml,
     complete: setupAC,
     failure: function(data) {
       alert("XML File could not be found");
     }
});

function parseXml(xml){
     $(xml).find("person").each(function(){     
        var thisItem = $(this).find('name').text();
        myArr.push(thisItem);
        alert(thisItem);
     });    
}

PHP

<?php

    include '../../inc_global/connect.php';

    $query = 'SELECT * FROM candidates';  

    $result = mysql_query($query, $link);

    $xmlOutput = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    $xmlOutput .= "<people>\n";

    while ($line = mysql_fetch_assoc($result)) {

   $xmlOutput .= "<person>\n"; 
   $xmlOutput .= "<name>" . $line['name'] . "</name>\n"; 
   $xmlOutput .= "</person>\n";

}

$xmlOutput .= "</people>\n";

echo $xmlOutput;

mysql_close($link);

?>
4

3 回答 3

0

尝试在输出信息之前放置标题:

....
header ("Content-Type:text/xml");  
echo $xmlOutput;
....

完整代码:

<?php

    include '../../inc_global/connect.php';

    $query = 'SELECT * FROM candidates';  

    $result = mysql_query($query, $link);

    $xmlOutput = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    $xmlOutput .= "<people>\n";

    while ($line = mysql_fetch_assoc($result)) {

   $xmlOutput .= "<person>\n"; 
   $xmlOutput .= "<name>" . $line['name'] . "</name>\n"; 
   $xmlOutput .= "</person>\n";

}

$xmlOutput .= "</people>\n";

header ("Content-Type:text/xml");  //<----------- xml header here
echo $xmlOutput;

mysql_close($link);

?>
于 2012-08-24T11:57:25.740 回答
0

检查 php 中发生的情况,将您的浏览器指向people.php.

无论如何,我建议你:

为 PDO 删除 mysql_

因为mysql_功能很差,会阻止与小鸡见面,而PDO有帮助;

对原始 XML 使用 SimpleXML

SimpleXML可帮助您构建代码,而不会对链接字符串感到厌烦。

为您的文档提供正确的 HTTP 标头

您正在生成一个 XML 文档,让浏览器意识到这一点:

header ("Content-Type:text/xml");  
echo $xmlOutput;
于 2012-08-24T12:03:21.217 回答
0

您能否确保函数 parseXml(xml) 在 ajax 调用成功时调用它时不需要任何参数。请注意,我没有尝试过代码,但这里只是一个猜测。

于 2012-08-24T12:11:32.217 回答