使用XMLHttpRequest()时未定义的_POST变量

时间:2015-12-15 08:21:28

标签: javascript php ajax post

我正在尝试使用Ajax使用POST方法将数据插入数据库。但是php无法识别post变量。

ajax:

function createUser() {
var _id=document.getElementById('new_id').value;
var _name=document.getElementById('new_name').value;
var params = "id="+_id+"&name="+_name;
if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else {
    // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
    console.log(xmlhttp);
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        if(xmlhttp.responseText=="")
            alert("New User is created!");
        else
            document.body.innerHTML=xmlhttp.responseText;
    }
};
xmlhttp.open("POST","resource/create_profile.php",true);
xmlhttp.send(params);
}  

php:

<?php
$id = $_POST["id"];
$name = $_POST["name"];  
$conn = oci_connect(....);  
$query = "....";  
$result = oci_parse($conn, $query);
oci_execute($result);
oci_close($conn);
?>  

如果我取消注释请求标头内容类型,则没有任何反应,不会显示错误。如果我评论它然后PHP显示错误。我正在截图。

http://imgur.com/CdKO84V

我该怎么办?如果我使用get方法然后它工作正常但我不能使用它,因为我需要上传文件。

1 个答案:

答案 0 :(得分:1)

最后我找到了解决方案!我必须在open方法下面添加setRequestHeader()方法。所以最后代码看起来像:

xmlhttp.open("POST","resource/create_profile.php",true);  
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");