Есть вот такая штука: Код (Text): $('#form').submit(function(e){ var codeVal = $('#form input[name=code]').val(); $.ajax({ type: 'POST', url: 'testJSCode.php', data: {'code':codeVal}, success: function(html){ if (html !== '') { $("<div id='indicator'></div>").insertAfter('#btn_sendCoock').html(html); return false; } } }); При передаче в php обработчик должно выводиться сообщение,что код неверный,но ничего не происходит - js словно проскакивает ajax запрос и переходит дальше... В вот если после ajax запроса поставить "return false",то выдаёт ошибку как положено,но код движение не продолжает-естественно!Как быть?В чём проблема?Прошу помощи!
ты скажи, что именно показывает в алерте и код покажи целиком блин, не туда посмотрел. вот перед последней строкой return false; }); поставь
1. В аллерте показывает: 'отсюда Этот код неверный! досюда'. 2. Если так сделать,то js перестаёт работать вовсе. 3. А что ещё из кода нужно?
Код (PHP): <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Example</title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script> </head> <body> <form id="form" method="post" onsubmit="return form()"> <input type="text" name="data" value=""> <input type="submit" name="submit" value="Send"> </form> <script type="text/javascript"> function form() { var data=$('#form input[name="data"]'); if(!data.val()) { alert('Заполните поле'); data.focus(); } else { $.post('testJSCode.php',{data:data.val()},function(html) { html=html || ''; if(html) { alert('Success'); } else { alert('Undefined'); } }).error(function() { alert('Error'); }); } return false; } </script> </body> </html>
Your, Ваше решение не помогло, всё так же ajax запрос js благополучно проскакивает. igordata, вернулся к коду, который был изначально, все предыдущие попытки были тщетны!
а так Код (Text): $('#form').submit(function(e){ var codeVal = $('#form input[name=code]').val(); $.ajax({ type: 'POST', url: 'testJSCode.php', data: { 'code':codeVal }, success: function(html){ if (html !== '') { $("<div id='indicator'></div>").insertAfter('#btn_sendCoock').html(html); return false; } } }); return false; });
)))Так всё замечательно работает, но вот только данные формы не отправляются в обычный php обработчик тогда - submit не происходит!В этом вся и соль...
Стоп!Если вставить в js код строчку return false;,то всё замирает словно и не отправляется. Получается,что js блокирует событие submit. И как же я в этом случае могу отправить данные в php обработчик, если submit не работает?
Я хочу,что бы выводились ошибки без перезагрузки страницы-валидацию формы делаю.Всю,что мог проверить с помощью js уже сделал,а теперь проверяю на стороне сервера введённые данные и, соответственно, если, что не так, то хочу выводить ошибки!
Ха!Я хочу,что бы при отключённом js форма тоже функционировала. Вот html: Код (Text): <form id="formBlog" action="inp_Blog.php" method="post"> <label for="cod">КОД С КАРТИНКИ:</label> <label for="cod"><img src="code/my_codegen.php"></label> <input name="code" class="text" type="text"/> <input id="btn_sendBlog" type="submit" value="ВОТ ТАКИЕ ДЕЛА" class=""/> </form> Вот js: Код (Text): $('#formBlog').live('submit',function(e){ var codeVal = $('#formBlog input[name=code]').val(); $.ajax({ type: "POST", url: "testJSCode.php", data: {'code':codeVal}, success: function(html){ if (html !== '') { $("<div id='indicatorB'></div>").insertAfter('#btn_send').html(html); document.getElementById('btn_sendBlog').disabled = true; } } }); }); Именно если после строки }); поставить return false;, то всё работает, но данные уже не отправляются в обычный php обработчик, если убрать, то отправляются и на белом фоне выводится ошибка уже через echo(inp_Blog.php). А вот php обработчик, к которому обращается js: Код (Text): $code = trim(($_POST['codeVal'])); if(get_magic_quotes_gpc()) { $code = stripslashes($code); } function generate_code() { $hours = date("H"); $minuts = substr(date("H"), 0 , 1); $mouns = date("m"); $year_day = date("z"); $str = $hours . $minuts . $mouns . $year_day; $str = md5(md5($str)); $str = strrev($str); $str = substr($str, 3, 6); $array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); srand ((float) microtime()*1000000); shuffle ($array_mix); return implode("", $array_mix); } function chec_code($code) { $code = trim($code); $array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY); $m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY); $result = array_intersect ($array_mix, $m_code); if (strlen(generate_code())!= strlen($code)) { return FALSE; } if (sizeof($result) == sizeof($array_mix)) { return TRUE; } else { return FALSE; } } if (!chec_code($_POST['code'])) { $html = 'Вы неверно ввели код с картинки!'; } else { $html = ''; } echo $html; Так понятнее?
В функции-обработчике события onsubmit ставишь return false; - чтобы она при любом раскладе возвращала false и форма НЕ отправлялась. А вот в функции, которая вызывается в случае success, если html пустой (то есть ошибок не было) - удаляешь с формы обработчик onsubmit и делаешь ей form.submit();