30.08.2012, 17:31
|
Интересующийся
|
|
Регистрация: 25.02.2012
Сообщений: 19
|
|
Возвращение результата с сервера
Проверяю введены данные с формы на уникальность. Для отправки на сервер использую скрипт:
$("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;
}
}
Не пойму как в случае уникальности отправить форму на добавления, в противном случае вывести сообщение об не уникальности?
|
|
30.08.2012, 18:53
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
Как-то так
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;
}
|
|
01.09.2012, 15:18
|
Интересующийся
|
|
Регистрация: 25.02.2012
Сообщений: 19
|
|
$("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;
}
});
}
Сделал так, но форма все равно отправляется. Как не отправлять форму если значение уже есть в базе?
|
|
01.09.2012, 15:38
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
Никак. Всё равно первым пунктом будет отправка формы на сервер, вторым - проверка в базе. Можно снести форму, если при проверке окажется, что значение есть в базе.
|
|
01.09.2012, 16:36
|
Интересующийся
|
|
Регистрация: 25.02.2012
Сообщений: 19
|
|
Сообщение от Serg_pnz
|
Никак. Всё равно первым пунктом будет отправка формы на сервер, вторым - проверка в базе. Можно снести форму, если при проверке окажется, что значение есть в базе.
|
Если добавить в функцию 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?
|
|
01.09.2012, 16:38
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
red-nicolas,
Как скрипт узнает, что значение есть в базе, без отправки формы ?
Или база заранее уже передана на клиента ?
|
|
01.09.2012, 16:43
|
Интересующийся
|
|
Регистрация: 25.02.2012
Сообщений: 19
|
|
Сообщение от Deff
|
red-nicolas,
Как скрипт узнает, что значение есть в базе, без отправки формы ?
Или база заранее уже передана на клиента ?
|
Через $.ajax, в коде выше происходит аякс запрос и в зависимости от ответа возвращается 1 или 0. Но как отправлять или не отправлять форму от этих результатов я не пойму.
|
|
01.09.2012, 17:46
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от 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;
});
|
|
01.09.2012, 20:54
|
Интересующийся
|
|
Регистрация: 25.02.2012
Сообщений: 19
|
|
Такой вариант не срабатывает, получается цикл.
Я немного поменял код:
$("form").submit(function(){
var checkString = $("#cat").val();
$.post(
"test.php",
{
cat: checkString
},
function(data){
alert(data);
});
});
В data возвращается 1 или 0 в зависимости от уникальности. Как в таком случае не отправлять форму если пришел 0 и отправить если пришло 1?
|
|
01.09.2012, 21:15
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
Повторно что ли не отправлять? А если юзер хочет уже другое что-то отправить? А если он отправит по очереди "Яблоко", "Груша", "Яблоко"?
Не страдайте ерундой...
Или объясните что вам надо сделать, но без кода, а на нормальном русском языке, с чувством, толком, расстановкой.
|
|
|
|