0

XML を読み込んで検索ボックスに入力しようとしています。私が持っているコードは静的 xml ファイルで正常に動作しますが、データベースからのデータに基づいて動的 XML ファイルを生成するには、PHP ファイルを読み込む必要があります。

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_ を削除

Funcsmysql_は悪く、ひよこに会うのを妨げますが、 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 に答える