Почему возвращает всегда is_need_submit = false; тем не менее работает.
Если поле пустое то ajaxcheck.php возвращает как задумано строку ошибки "Поле логин не может быть пустым". Выводим ошибку в div#errorMsg". Задаем is_need_submit = false – запрет отправки формы к check.php. Alert показывает false как и ожидалось.
Если в поле не пустое, ajaxcheck.php возвращает “OK”, присваиваем is_need_submit = true;
Но alert все равно показывает false, а должен true. Да и форма тем не менее отправляется в check.php, значит реально is_need_submit все-таки true.
Просьба кто знает, подскажите в чем загвоздка?
Коды
1. Файл с формой:
header('Content-type: text/html; charset=utf-8');
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ajax отправка формы</title>
<script type="text/javascript" src="js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="js/signup.js"></script>
</head>
<body>
<div id="errorMsg" style="width:360px; margin: 10px auto"></div>
<form id="regform" name = "regform" method="post" action="check.php" >
<input type="text" name="login" id="login" value="" />
<button name="reg" type="submit" value="reg">Отправить</button>
</form>
</body>
</html>
2. Файл ajaxcheck.php:
header('Content-type: text/html; charset=utf-8');
$err = "";
if (isset($_POST['login'])) { $username = $_POST['login']; }
if (empty($username)) {
$err = "Поле логин не может быть пустым";
echo json_encode( $err ); // $err в JSON-строку и строку обратно скрипту signup.js
} else {
echo "OK";
}
3. Файл signup.php
$(document).ready(function(){
var is_need_submit = false;
$("#regform").submit(function() {
var str = $(this).serialize();
$.ajax (
{
type: "POST",
url: "ajaxcheck.php",
data: str,
success: function(msg) {
if ( msg == 'OK' ) {
is_need_submit = true;
} else {
errStr = JSON.parse (msg);
msgErrArea = $('#errorMsg'); // div для вывода сообщений ошибок
msgErrArea.empty(); // очищаем содержимое элемента div#errorMsg
msgErrArea.append(errStr).show(); // отображаем сообщение о соответствующей ошибке (выводим ответ php сюда)
is_need_submit = false;
}
}
});
alert('is_need_submit = ' + is_need_submit);
return is_need_submit;
});
});
4. Файл check.php
echo "OK";