私のPHPファイルはデータベースを介してXMLを生成します。このファイルは動作しますが、問題はJavaScriptの部分にあります。AJAX/PHP/XML - JavaScriptを使用していくつかのデータを取得
状況:文字を入力すると、PHPで生成されたXMLからデータを取得できます。
PHP
<?php
$bdd = new mysqli("localhost", "root", "", "sommets");
if ($bdd->connect_error) {die("Impossible de se connecter");}
$bdd->set_charset("utf-8");
if (isset($_GET['recherche'])) {
$recherche = addslashes($_GET['recherche']);
$sql = "SELECT * from sommets where som_nom like '$recherche%'";
$rec = $bdd->query($sql) or die($bdd->error);
header("Content-type: text/xml");
echo("<sommets>");
while ($row = $rec->fetch_object()) {
echo("<sommet altitude=\"{$row->som_altitude}\">");
echo("<nom>{$row->som_nom}</nom>");
echo("<region>{$row->som_nom}</region>");
echo("</sommet>");
}
echo("</sommets>");
}
?>
Javascriptを
<input type="text" name="r" id="recherche"/>
<div id="nom"></div>
<script>
document.getElementById('recherche').addEventListener('keyup', function(){
var nom = document.getElementById("nom");
nom.innerHTML = "";
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState<4) return;
var resultatsXML = xhr.responseXML.getElementsByTagName("sommets");
if(resultatsXML.length > 0){
for (var i=0; i<resultatsXML.length; i++) {
var nom_sommet = resultatsXML[i].getElementsByTagName("nom")[i].
childNodes[0].nodeValue;
document.getElementById("nom").innerHTML += nom_sommet[i]
.childNodes[0].nodeValue;
}
}
}
var r = document.getElementById("recherche").value;
if(r != ""){
xhr.open("GET", "TP09_AJAX_XML.php?recherche="+r);
xhr.send();
} else { nom.innerHTML = ""; }
});
私はこのエラーがあります:0123」と
Uncaught TypeError: Cannot read property '0' of undefined
またはそれを"または" nodeValue
"となります。 PHPで生成されたXMLから一括弧を読みたいだけです。
アイデアはありますか?
'.childNodes [0]' 'ツリーと.childNodesではありません[0] .childNodes'は後に' .nodeValue'を入手するには、すぐに定義されていません
resultatsXML[i].getElementsByTagName("nom")[0]
から.nodeValue
を取得する'childNodes [0]' – Beginner