2016-10-30 7 views
0

スパン要素のmouseoverイベントを使用してphpページへのajaxポストコールを開始しますが、レスポンスを取得するために単純なエコーを使用した時点でresponseTextを使用し、responseXMLを使用した時点では常に未定義となります。なぜ誰かが私に説明してくれますか?ここ は、Ajaxコードです:なぜ私はこのajaxポストでPHPに未定義の応答を得るのですか?

var span = document.getElementsByTagName('span'); 

for (var i = 0; i < span.length; i++) { 
    span[i].addEventListener("mouseover", showInformation, false); 
} 

function showInformation(event) { 
    var xhr = new XMLHttpRequest(); 

    xhr.open("POST", "../includes/ajax_response.php", true); 
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

xhr.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     content(xhr, event); 
    } 
}; 

xhr.send("uname=" + event.target.firstChild.textContent); 
} 

function content(xhr, event) { 
    var info = document.getElementById('displayInformation'); 
    var xmlResponse = xhr.resopnseXML; 
    var xmlDocumentElement = xmlResponse.documentElement; 
    var message = xmlDocumentElement.firstChild.data; 
    info.innerHTML = message; 
    info.style.visibility = "visible"; 
    event.target.addEventListener("mouseout", function() { 
    document.getElementById('displayInformation').style.visibility = "hidden"; 
    }, false); 
} 

そして、これはPHPのコードです:

$username = $_POST['uname']; 
$query = "SELECT id, joined FROM users WHERE username = '{$username}' LIMIT 1"; 
$first_result = Database::getInstance()->query($query); 
if ($first_result->num_rows == 1) { 
    foreach ($first_result as $first) { 
     $id = $first['id']; 
     $joined = $first['joined']; 
    } 
} 
$first_result->free(); 

$query = "SELECT COUNT(message) AS count FROM blogs WHERE user_id = '{$id}'"; 
$results = Database::getInstance()->query($query); 
if ($results) { 
    foreach ($results as $result) { 
     $number = $result['count']; 
    } 
} 

header("Content-Type: text/xml"); 
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>'; 
echo '<response>'; 
     echo "joined: {$joined}"; 
     echo "number of posts: {$number}"; 
echo '</response>'; 

は、これは単なる $username = $_POST['uname']、その後echo $usernameとXML、I疲れたシンプルなバージョンのPHPのバージョンであるが、常に応答があります は未定義です。

答えて

1

コードを一度読みましたが、重大なエラーはないようです。 responseXMLの

var xmlResponse = xhr.resopnseXML; 

綴りが間違っている...多分それは未定義されるxmlResponseを引き起こしているものです。しかし、私はこのマイナーなバグを発見しましたか?

+0

うわー、間違いを信じることはできません。ありがとう、これはxmlの問題を解決しましたが、私はまだresponseTextに問題がありましたが、それについてはtommorowを参照してください – Uros

+0

別のスペルミスですか? :-) – NavkarJ

関連する問題