Возвращение результата с сервера
Проверяю введены данные с формы на уникальность. Для отправки на сервер использую скрипт:
$("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? |
Повторно что ли не отправлять? А если юзер хочет уже другое что-то отправить? А если он отправит по очереди "Яблоко", "Груша", "Яблоко"?
Не страдайте ерундой... Или объясните что вам надо сделать, но без кода, а на нормальном русском языке, с чувством, толком, расстановкой. |
Часовой пояс GMT +3, время: 08:17. |