下面是我的html,我需要没有表单格式的输入对话框。
<!DOCTYPE>
<html>
<head>
<script>
var username;
function myFunction() {
//input dialog
username = prompt("Please enter your name", "");
if (username != "") {
checkNameValidate();
} else {
alert("The name is empty, please insert your name");
}
}
function checkName() { //ajax to validate.php
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "validate.php?username=" + username, false);
xmlhttp.send(null);
//doFunction();
}
function doFunction() {
//function
}
</script>
</head>
<body>
<input type="button" onclick="myFunction()" value="Name" />
</body>
</html>
下面是validate.php代码,我的数据库名称是testajax,
<?php
$username=$_POST["username"];
mysql_connect("localhost","root","");
mysql_select_db("testajax");
$query1 = mysql_query("select * from user where name='$username'");
if(mysql_num_rows($query1)>0){
echo "<script language=javascript>alert('The name have used');</script>";
}
?>
这是我的工作,但无法验证用户,我的错误是什么,任何人都可以帮忙纠正?
答案 0 :(得分:1)
您在GET
请求中使用XmlHTTP
,在$_POST
中使用validate.php
。
请更正并让我知道它是如何工作的。
此外,您的javascript方法不匹配checkNameValidate&amp;检查名。 你需要获得响应并做你的逻辑(我不确定它是什么)。
请参阅:http://www.w3schools.com/ajax/ajax_xmlhttprequest_response.asp了解更多详情。
答案 1 :(得分:0)
将您的PHP代码更改为($ _POST到$ _REQUEST),例如,
<?php
$username=$_REQUEST["username"];
在您的javascript代码中调用函数checkName()
而不是checkNameValidate()
。
您需要为响应添加onreadystatechange函数,请尝试以下代码,
var xmlhttp;
function myFunction() {
username = prompt("Please enter your name", "");
if (username != "") {
checkName(username);
} else {
alert("The name is empty, please insert your name");
}
}
function checkName(username) { //ajax to validate.php
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function ()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET", "validate.php?username=" + username, false);
xmlhttp.send(null);
}
如果您使用的是jquery,请使用$.ajax()
您的PHP代码可以更好,
<?php
// for get method not for post
// check username is set or not
$username=isset($_GET["username"]) ? $_GET["username"] : '';
if($username){ // check if username is not empty
mysql_connect("localhost","root","");
mysql_select_db("testajax");
$query1 = mysql_query("select * from user where name='$username'");
if(mysql_num_rows($query1)>0){
echo "The name have used.";
} else {
echo "Username not exists, proceed.";
}
} else {
echo "Please enter username.";
}
?>
答案 2 :(得分:0)
您可以通过XMLHttpRequest.responseText获取它,如下所示,但它与IE6 / 7浏览器不兼容。
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET","validate.php?username="+username,false);
xmlhttp.send(null);
你应该使用JQUERY。
$.get("validate.php?username="+username, function(responseText) {
alert(responseText);
});