Возвращение результата с сервера
Проверяю введены данные с формы на уникальность. Для отправки на сервер использую скрипт:
$("form").submit(function(){ var checkString = $("#cat").val(); var data= 'cat='+ checkString; if(checkString) { $.ajax({ type: "POST", url: "test.php", data:data, success: function(html){ // получаем результаты $("#massege").text(html); return html; } }); } }); Для проверки такой пхп $cat=$_POST['cat']; //если к нам идёт $_POST запрос if (isset($_POST['cat'])) { $db=mysql_connect ("localhost", "u1624514_chef", "design-1984"); mysql_select_db ("u1624514_osnova",$db); mysql_query('SET NAMES utf8'); $r=mysql_query ("SELECT id FROM 001_cat WHERE cat='$cat'",$db); $m=mysql_fetch_array ($r); // получаем результаты if($m['id'] == 0) { return true; } else { return false; } } Не пойму как в случае уникальности отправить форму на добавления, в противном случае вывести сообщение об не уникальности? |
Как-то так
if($m['id'] == 0) { //тут сделать инсерт и вернуть 1 echo 1; //это не нужно return true; } else { echo 0; //это не нужно return false; } success: function(html){ // получаем результаты //проверить html на 1 или 0 и алертом "Вы зарегистрированы" или "Логин не уникален" //это не нужно $("#massege").text(html); //это не нужно return html; } |
$("form").submit(function(){ // получаем то, что ввёл пользователь var checkString = $("#cat").val(); var data= 'cat='+ checkString; // если checkString не пуста if(checkString) { $.ajax({ type: "POST", url: "test.php", data:data, success: function(html){ // получаем результаты $("#massege").text(html); if(html==1){var result=true;}else{var result=false;} return result; } }); } Сделал так, но форма все равно отправляется. Как не отправлять форму если значение уже есть в базе? |
Никак. Всё равно первым пунктом будет отправка формы на сервер, вторым - проверка в базе. Можно снести форму, если при проверке окажется, что значение есть в базе.
|
Цитата:
$("form").submit(function(){ // получаем то, что ввёл пользователь var checkString = $("#cat").val(); var data= 'cat='+ checkString; // если checkString не пуста if(checkString) { $.ajax({ type: "POST", url: "test.php", data:data, success: function(html){ // получаем результаты $("#massege").text(html); if(html==1){var result=true;}else{var result=false;} alert(result); return result; $("form").text(result); } }); } return false; }); то форма не отправиться, как мне в это место (return false) вывести значение result? |
red-nicolas,
:) Как скрипт узнает, что значение есть в базе, без отправки формы ? Или база заранее уже передана на клиента ? |
Цитата:
Через $.ajax, в коде выше происходит аякс запрос и в зависимости от ответа возвращается 1 или 0. Но как отправлять или не отправлять форму от этих результатов я не пойму. |
Цитата:
$("form").submit(function(){ // получаем то, что ввёл пользователь var checkString = $("#cat").val(); var data= 'cat='+ checkString; // если checkString не пуста if(checkString) { $.ajax({ type: "POST", url: "test.php", data:data, success: function(html){ // получаем результаты $("#massege").text(html); if(html==1){var result=true; *!* $("form").submit(); */!* }else{var result=false;} alert(result); return result; } }); } return false; }); |
Такой вариант не срабатывает, получается цикл.
Я немного поменял код: $("form").submit(function(){ var checkString = $("#cat").val(); $.post( "test.php", { cat: checkString }, function(data){ alert(data); }); }); В data возвращается 1 или 0 в зависимости от уникальности. Как в таком случае не отправлять форму если пришел 0 и отправить если пришло 1? |
Повторно что ли не отправлять? А если юзер хочет уже другое что-то отправить? А если он отправит по очереди "Яблоко", "Груша", "Яблоко"?
Не страдайте ерундой... Или объясните что вам надо сделать, но без кода, а на нормальном русском языке, с чувством, толком, расстановкой. |
Цитата:
|
Ну и пусть себе отправляет форму хоть стопятьсот раз.
НО! Скрипт пхп каждый раз должен проверять есть логин или нет. • Если есть, то авторизуем пользователя, пишем ему куку, что авторизован, а js уже можно посмотреть куку и не отправлять повторно, но для всяких умников всё равно пхп должен отрабатывать левый запрос (курлами там можно отправить или еще как). • Если нет, то регистрируем пользователя (инсерт в базу) и тут же его, пользователя авторизуем или отправляем мыло на завершение авторизации. ЗЫ: аутентификация именно на куках - первое, что пришло в голову. |
Цитата:
|
Я вижу тут с логикоя бЯда...
Всё будет без перезагрузки. Пусть юзер отправляет свои данные, а вы уж там их принимайте и выдавайте управляющее воздействие. На маленьких проектах я прям ответом генерю js-код, сообщающий об ошибке, для больших надо бы json притягивать. Итак, есть форма и незарегистрированный пользователь, так пусть пользователь вводит данные. Как только он правильно введет пару логин/пароль, то надо ее скрыть со страницы. Как я писал выше - надо поддерживать аутентификацию. Если уже зарегистрированный юзер, то форму ему не показываем (например при обновлении страницы) - так не будет левых вводов со страницы. Ошибки можно выводить алертом или еще как, блокируя страницу. |
Часовой пояс GMT +3, время: 18:36. |