我有以下ajax调用
$.ajax(
{
type: "POST",
url: "Utilities/CheckUsername.php",
data: "un="+ un,
success: function(data)
{
if(data!=1)
{
$('#mike').html(data);
return false;
}
}
});
如果使用了用户名,我希望页面保留,否则重定向到for的action属性中的whats。
显然这不起作用。但为什么?我不想使用preventdefault
,这样我就可以更好地了解问题和解决方案的位置。
编辑: 服务器代码
<?php
$seed = 'n48sma94r98';
$email = $_POST['un'];
$mysqli = new mysqli('localhost','uml','uml','uml');
if (!$mysqli)
{
printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error());
exit;
}
$query = "Select User_Email as Email from user2 where User_Email = AES_ENCRYPT('$email','$seed') ";
$result = $mysqli->query($query);
if($result->num_rows > 0)
{
echo "1";
}
else
{
echo "2";
}
?>
整个表格减去元:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script type="text/javascript" src="Resources/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">$(document).ready(function(){
$("#login").submit(function() {
var un = $('#username').val();
$.ajax(
{
type: "POST",
url: "Utilities/CheckUsername.php",
data: "un="+ un,
success: function(data)
{
if(data!=1)
{
$('#mike').html(data);
return false;
}
}
});
});
});
</script>
</head>
<body>
<form name="login" id="login" method="post" action="dsds.html">
UserName<input type="text" name="username" id="username"value="">
Password<input type="text" name="password" id="password" value="">
Password Again<input type="text" name="passwordagain" id="passwordagain" value="">
<input type="hidden" name="NewClass" id="NewClass" value="true">
<input type="submit" name="submit" id="submit" value="submit">
</form>
<span id = "mike"></span>
</body>
</html>
答案 0 :(得分:2)
一些建议。命名您的变量和方法。什么是“联合国”和“数据”?它们包含什么?
还返回了什么类型的数据?字符串,HTML,XML,JSON?
如果您想重定向,可以使用window.location = 'someURL';
要发送表单,您可以执行以下操作:$('#form-id').submit();
您可以返回更有意义的消息,例如usernameExists,usernameFound或usernameNotExists,usernameNotFound。即使你是唯一一个参与这个项目的人,当你四处寻求帮助时,偷看需要了解你的代码。它应该像句子一样。
答案 1 :(得分:0)
我想你用
if(data!=1)
查看用户名是否被拍摄?
您是否尝试使用某种调试器查看data
的值? (甚至是alert()
)。
正如我假设您在用户名已被占用时,您没有从服务器发送1
...
答案 2 :(得分:0)
我通常使用OK
作为响应指标(或者你称之为)。如果回复(您的data
)以OK
开头,则为正,否则整个邮件都是错误:
在Javascript中:
success: function(response) {
if ( 'OK' == response.substr(0, 2) ) {
// Okay, so show something green or do nothing
var message = response.substr(2); // Everything after "OK"
}
else {
// Not okay, so show something red or redirect
var goto = response;
// The entire response message `response` is the target destination
// If you don't want PHP to define the redirect location, just hard code it right here
window.location = goto;
}
}
在PHP中:
$result = $mysqli->query($query);
$usernameExists = $result->num_rows > 0; // A nice boolean
exit( $usernameExists ? '/error.html' : 'OKThis username is fine' );
<强> PS 即可。 return false
函数中的success
不执行任何操作。你可以省略它。
修改强>
不改变PHP:
success: function(response) {
if ( '1' !== response ) {
window.location = 'error.html';
}
}
由于response
是一个字符串,我会检查它(而不是数字)。检查相同(===
)而不是相等(==
)永远不会伤害。