美好的一天,我正在尝试在我的 Web 应用程序中使用 Ajax。但我有一个小问题。我尝试控制表单是否已注册某个用户名。但我的 JavaScript 似乎没有将 $_POST 值发送给 PHP。并在我有 $_POST['user'] 的行上未定义该用户的响应。
这是我所拥有的。
PHP:
<?php
$opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
$dsn ='mysql:dbname=someone;host=127.0.0.1;charset=utf8';
$user='someone';
$pswd='aaa';
$dbh = new PDO($dsn, $user, $pswd, $opt);
$query="SELECT 1 FROM users WHERE username = :username";
$query_p=array(':username' => $_POST['user']);
try
{
$statment = $dbh->prepare($query);
$result = $statment->execute($query_p);
}catch(PDOException $e)
{
echo "Can't run query: " . $e->getMessage();
}
$row = $statment->fetch();
if($row){
return 0;
}else {
return 1;
}
?>
因此它打开了与数据库的连接并运行查询
JavaScript:
function checkUser(e){
var state1 = document.getElementById("alert_text");
var u = document.getElementById("user").value;
if(u != ""){
state1.innerHTML = 'processing...';
var request = new XMLHttpRequest();
request.open("POST", "validation.php", true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
var result=request.responseText;
alert(result);
if(result==1){
state1.innerHTML="OK";
}else{
state1.innerHTML="Alredy exists!";
}
}
};
request.send(u);
var slova = request.responseText;
}
}
document.getElementById("user").addEventListener("blur",checkUser,false );
所以从技术上来说它是ajax。
HTML:
<form id="check" name="signUp" method="post">
<p class="alert_text"></p>
<label for="user">Username:</label><br />
<input id="user" name="user" type="text" ><br />
</form>
我真的不明白问题出在哪里......
最佳答案
您没有将用户名传递到 PHP 脚本中。您的 PHP 正在查找 POST 变量 $_POST['user']
– 在 JavaScript 中您发出 GET 请求,因此 PHP 脚本无需查找任何内容。
关于javascript - Ajax 。发送数据到php文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35014073/