当我尝试使用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不工作?
答案 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");