$ _REQUEST执行时,AJAX $ _POST不起作用

时间:2015-12-29 23:59:25

标签: php ajax post

当我尝试使用AJAX POST时,以下html不起作用。

<script>
function call_hmm_scan() {
var specie = document.getElementById("specie_name").value;
var loci = document.getElementById("locus_id").value;

var params="specie_name=" + specie + "&locus_id=" + loci

    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("domains").innerHTML = xmlhttp.responseText;
        }
    };

//        xmlhttp.open("GET", "http://shenlab.sols.unlv.edu/kwatanabe/ajax_test.php?" + params, true);
//        xmlhttp.send();

    xmlhttp.open("POST", "http://shenlab.sols.unlv.edu/kwatanabe/ajax_test.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send(params);
}
</script>

我在“ajax_test.php”中的PHP代码如下:

<?php
$specie = $_POST["specie_name"];
$loci = $_POST["locus_id"];
echo("$specie<br>");
echo("$loci");
?>

当我在HTML中取消注释GET行,并在我的PHP中将$ _POST更改为$ _REQUEST时,它可以正常工作!!

xmlhttp.open("GET", "http://shenlab.sols.unlv.edu/kwatanabe/ajax_test.php?" + params, true);
xmlhttp.send();

为什么POST不工作?

1 个答案:

答案 0 :(得分:2)

问题在于这条线,

xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xhttp未在您的代码中定义。

所以,改变

xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");