javascript - 为什么我总是收到这个 ajax post 到 php 的未定义响应?

标签 javascript php ajax

我在 span 元素上使用 mouseover 事件来启动对 php 页面的 ajax post 调用,但我总是未定义,首先是当我使用简单的 echo 来获取响应时的responseText,现在当我使用responseXML时。有人可以解释一下为什么吗? 这是ajax代码:

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>';

这是带有 xml 的 php 版本,我厌倦了简单的版本 $username = $_POST['uname'] 然后echo $username,但总是响应 未定义。

最佳答案

我读过你的代码一次,似乎没有任何重大错误。然而,我发现了这个小错误:

var xmlResponse = xhr.resopnseXML;

responseXML 的拼写不正确..也许这就是导致 xmlResponse 未定义的原因?

关于javascript - 为什么我总是收到这个 ajax post 到 php 的未定义响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332323/

相关文章:

javascript - 使用 jQuery 即时排序和显示 Ajax 数据

javascript - 尝试使用 settimeout 避免分离函数

javascript - 设置 JavaScript 变量 = null,还是保留未定义?

javascript - 使用 selenium,如何检测 Internet Explorer 浏览器插件?

php - 将 MySQL 值存储为整数

php - 检测图像中的文本

javascript - Angular 常数在另一个模块的配置阶段未定义

php - 如何在 Laravel 5 和 Query Builder 中编写“OR WHERE YEAR(...) 子句?

javascript - Rails 不显眼的 ajax :failure event not firing

javascript - 如何通过 AJAX 发送 YouTube 视频元数据