[英]Submit jquery form based on return values from php
我想根據php腳本返回的值在#username_input
顯示。 似乎if條件不起作用。
JavaScript:
$(document).ready(function () {
$('#username_input').keyup(function () {
$.post('header/check_username.php', {
username: form.username.value
},
function (result_username) {
if (result_username == 'a') {
$('#feedback_username').html('choose a username').show();
}
if (result_username == 'b') {
$('#feedback_username').html('Too short').show();
}
});
});
HTML:
<form id="registeration_form" name="form" onsubmit="return hello()" >
<table>
<tr>
<td>Username </td>
<td><input type="text" id="username_input" name="username" autofucus/></td>
<td><span id="feedback_username"></span></td>
<br/><br/>
<tr>
<td>Password </td>
<td><input type="password" id="password_input" name="password"/></td>
</tr>
<br/><br/>
<tr>
<td>Confirm Password</td>
<td><input type="password" id="password_confirm" name="password_confirm"/></td>
<td><span id="feedback_password"></span></td>
</tr>
<br/><br/>
<tr>
<td>Email </td>
<td><input type="text" id= "email_input" name="email" /></td>
</tr>
</table>
<center><input type="submit" x value="Register"/></center>
<br/>
<div id= "onsubmit_feedback"></div>
<center><a href="javascript:register('hide');">close</a></center>
</form>
如果用戶名為空,則返回a
如果用戶名少於6個字符,則返回b
。
PHP:
<?php
$con = mysqli_connect("localhost:3306", "root", "", "project_new");
if (mysqli_connect_errno($con)) {
echo "Unsuccessful" . mysqli_connect_error();
exit();
}
@$username = mysqli_real_escape_string($con, trim($_POST['username']));
$check = mysqli_query($con, "select u from users where u ='$username'");
$check_num_rows = mysqli_num_rows($check);
if ($username == NULL)
retutn 'a';
//echo "choose a username";
else if (strlen($username) <= 5)
return 'b';
//echo "Too Short. Minimum 6 characters";
else {
if ($check_num_rows == 0)
echo "Available :)";
else if ($check_num_rows == 1)
echo "Not Available :( ";
}
?>
我在以下兩行中發現了兩個問題(@Fred已經在評論中提到了一個問題):
if ($username==NULL)
retutn 'a';
首先,您的$username
永遠不會為空。 mysqli_real_escape_string
返回字符串。 第二行retutn 'a'
可能是Fred所建議的錯字。
嘗試將這些行更改為:
if (empty($username))
echo 'a';
您的問題出在錯誤的回調函數和PHP字符串之內。 在jQuery的API文檔之后,成功的回調函數將獲得三個參數(數據,textStatus,jqXHR)。
嘗試針對PHP文件的以下解決方案:
<?php
$con = mysqli_connect("localhost:3306", "root", "", "project_new");
if (mysqli_connect_errno($con)) {
echo "Unsuccessful" . mysqli_connect_error();
exit();
}
$username = mysqli_real_escape_string($con, trim($_POST['username']));
$check = mysqli_query($con, "select u from users where u ='$username'");
$check_num_rows = mysqli_num_rows($check);
if (empty($username)) {
echo 'a';
//echo "choose a username";
}
else if (strlen($username) <= 5) {
return 'b';
//echo "Too Short. Minimum 6 characters";
}
else {
if ($check_num_rows == 0)
echo "Available :)";
else if ($check_num_rows == 1)
echo "Not Available :( ";
}
?>
這對於JavaScript:
$(document).ready(function () {
$('#username_input').keyup(function () {
$.post('header/check_username.php', {
username: form.username.value
},
function (data, textStatus, jqXHR) {
if (data == 'a') {
$('#feedback_username').html('choose a username').show();
}
if (data == 'b') {
$('#feedback_username').html('Too short').show();
}
}
);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.