Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Возвращение результата с сервера (https://javascript.ru/forum/jquery/31226-vozvrashhenie-rezultata-s-servera.html)

red-nicolas 30.08.2012 17:31

Возвращение результата с сервера
 
Проверяю введены данные с формы на уникальность. Для отправки на сервер использую скрипт:
$("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;
    }
}


Не пойму как в случае уникальности отправить форму на добавления, в противном случае вывести сообщение об не уникальности?

Serg_pnz 30.08.2012 18:53

Как-то так

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;
	                    }

red-nicolas 01.09.2012 15:18

$("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;
				    }
        });
}


Сделал так, но форма все равно отправляется. Как не отправлять форму если значение уже есть в базе?

Serg_pnz 01.09.2012 15:38

Никак. Всё равно первым пунктом будет отправка формы на сервер, вторым - проверка в базе. Можно снести форму, если при проверке окажется, что значение есть в базе.

red-nicolas 01.09.2012 16:36

Цитата:

Сообщение от Serg_pnz (Сообщение 202282)
Никак. Всё равно первым пунктом будет отправка формы на сервер, вторым - проверка в базе. Можно снести форму, если при проверке окажется, что значение есть в базе.

Если добавить в функцию return false

$("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?

Deff 01.09.2012 16:38

red-nicolas,
:) Как скрипт узнает, что значение есть в базе, без отправки формы ?
Или база заранее уже передана на клиента ?

red-nicolas 01.09.2012 16:43

Цитата:

Сообщение от Deff (Сообщение 202305)
red-nicolas,
:) Как скрипт узнает, что значение есть в базе, без отправки формы ?
Или база заранее уже передана на клиента ?


Через $.ajax, в коде выше происходит аякс запрос и в зависимости от ответа возвращается 1 или 0. Но как отправлять или не отправлять форму от этих результатов я не пойму.

Deff 01.09.2012 17:46

Цитата:

Сообщение от 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; 
});

red-nicolas 01.09.2012 20:54

Такой вариант не срабатывает, получается цикл.

Я немного поменял код:

$("form").submit(function(){
	var checkString = $("#cat").val();
    	$.post(
  "test.php",
  {
    cat: checkString
  },
  function(data){
	  alert(data);
	  
	  });

});


В data возвращается 1 или 0 в зависимости от уникальности. Как в таком случае не отправлять форму если пришел 0 и отправить если пришло 1?

Serg_pnz 01.09.2012 21:15

Повторно что ли не отправлять? А если юзер хочет уже другое что-то отправить? А если он отправит по очереди "Яблоко", "Груша", "Яблоко"?
Не страдайте ерундой...
Или объясните что вам надо сделать, но без кода, а на нормальном русском языке, с чувством, толком, расстановкой.


Часовой пояс GMT +3, время: 08:17.