AJAX 开机自检未收到正确的值


AJAX POST is not receiving correct value

我想发布所选单选按钮的值,但 PHP 中的 $_POST 变量被分配为"未定义",我需要更改什么才能使 $_POST 获得正确的值?我想这可能是因为我没有使用过 URIencode,但是当我使用它时,我的 JavaScript 甚至没有得到元素。

JAVASCRIPT

function rappoll(){
    var xmlHTTPreq;
    var url = "poll.php";
    var params="name="+name;
    var elements = document.getElementsByName("elements");
    var checkedButton = getName(elements);
if (checkedButton) {
    var name = checkedButton.value;
}
if (window.XMLHttpRequest) {
    try {
        xmlHTTPreq = new XMLHttpRequest();
    } catch(e) {
        xmlHTTPreq = false;
    }
} else {
    try{
        xmlHTTPreq = new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e){
        xmlHTTPreq = false;
    }
}
xmlHTTPreq.open("POST", url, true);
xmlHTTPreq.onreadystatechange = function()
{
    if(xmlHTTPreq.readyState == 4 && xmlHTTPreq.status == 200){
        document.getElementById('poll').innerHTML = xmlHTTPreq.responseText;
    }
}
xmlHTTPreq.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHTTPreq.send(params);
}
function getName(group){
for (var i = 0; i < group.length; i++) {
    var button = group[i];
    if (button.checked) {
        return button;
    }
}
return undefined;

}

.PHP

$name = $_POST['name'];

在这里声明并分配params

var params="name="+name;

由于name没有定义params现在"name=undefined"。请注意,name是由于变量提升而声明的,因此您不会看到undefined variable 'name'

分配name后,您还必须重新分配params,或更改此行:

xmlHTTPreq.send(params);

xmlHTTPreq.send("name=" + name);