我想从连接到数据库的PHP文件中获取一些结果,但发送到数据库的变量不是从XMLHttpRequest发送的。
HTML:
<input type="text" id="name"/>
这是JS:
var uname = document.getElementById('name');
function checkUser(){
var xhr = new XMLHttpRequest();
xhr.open("POST" , 'file.php' , true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200)
{
console.log(xhr.responseText);
}
}
var userName = uname.value;
xhr.send(userName);
}
uname.addEventListener("blur" , checkUser);
PHP:
if(isset($_POST['userName'])){
echo $_POST['userName'];
}
如果删除该条件,我会收到一条消息,指出userName
索引未定义。
答案 0 :(得分:0)
试试这个。这应该做到。
var userName = uname.value;
xhr.send("data" + userName);
你的PHP应该像这样处理。在这种情况下,将它放在变量($ response)中,并在代码末尾回显var。
$data = $_POST['data'];
if(isset($_POST['data'])){
$username = $_POST['data'];
} else {
$username = "Data Not Set"}
echo $username;
答案 1 :(得分:0)
正如上面的评论中指出的那样,你没有正确地分配POST变量 - 每个变量应该是name/value
对,所以在这个例子中你要将名称设置为userName
,并将值设置为值来自表单元素。
function checkUser(){
var xhr = new XMLHttpRequest();
xhr.open( 'POST', 'file.php', true );
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200)
{
console.log(xhr.responseText);
}
}
/* As the function was bound to the input you can use `this` to get the value */
xhr.send( 'userName='+this.value );
}
var uname = document.getElementById('name');
uname.addEventListener('blur' , checkUser.bind( uname ), false );/* bind function to field */
或者,更灵活的方法是执行ajax请求的小函数,该请求可用于多个调用,而无需重复重写相同的代码。
function ajax( url, params, callback ){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if( this.readyState == 4 && this.status == 200 ) callback.call( this, this.response );
};
xhr.open( 'POST', url, true );
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send( params );
}
function checkUser(){
ajax.call( this, 'file.php', 'username='+this.value, function(r){
console.log( r );
});
}
var uname = document.getElementById('name');
uname.addEventListener('blur' , checkUser.bind( uname ), false );
答案 2 :(得分:0)
您需要在php端添加file_get_contents,
hidden