Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: jQuery: добавить сообщение об ошибке, при неправильной авторизации
 
 автор: technic611   (02.01.2011 в 16:31)   письмо автору
 
 

есть форма для входа на сайт

<div id="myDiv" align="center">


<table border="0" width="407" height="83">
<form id="myForm">
    <tr>
        <td height="26" width="131">
        
                    Имя пользователя
        
        </td>
        <td height="26" width="160"><input type="text" name="name" size="17"></div></td>
        <td height="26" width="94">
                                <input type="button" onclick="FormClick(); return false" value="Войти" name="B1">                
                                </td>
    </tr>
    <tr>
        <td height="25" width="131">Пароль</td>
        <td height="25" width="160">
                    <input type="text" name="password" size="17">
        
        </td>
        <td height="25" width="94"><input type="checkbox" name="C1" value="ON">Запомнить</td>
    </tr>
    <tr>
        <td height="21" width="131">&nbsp;</td>
        <td height="21" width="160">Забыли пароль?</td>
        <td height="21" width="94">Регистрация</td>
    </tr>
    
    </form>
</table>


</div>

<div id="Myerror">Здесь хочу видеть сообщение об ошибке</ div>


скрипт замены содержимого в Mydiv если пользователь нажал кнопу войти

<script>
function FormClick () {
  var str = $("#myForm").serialize();
  $.post("handler.php", str, function(data) {
    $("#myDiv").html(data);
  });
}
</script>



файл обработчик

<?
код проверки данных
выводим сообщени что все ОК
echo "Привет: $name'"
?>


Мне надо чтобы функция data не убирала форму в Mуdiv если пользователь ввел неверный пароль а выводилось сообщение в div Myerror об ошибке, что нужно дописать в скрипте? помогите только начал изучать

  Ответить  
 
 автор: sim5   (02.01.2011 в 16:38)   письмо автору
 
   для: technic611   (02.01.2011 в 16:31)
 

Ну вы же сами перезаписываете содержимое div тем, что возвращает сервер, вот здесь:
$("#myDiv").html(data);
Создайте в div елемент, тот же div или span, и ему прописывайте возвращаемое.

  Ответить  
 
 автор: technic611   (02.01.2011 в 16:46)   письмо автору
 
   для: sim5   (02.01.2011 в 16:38)
 

можно пример как вы это видите?
мне так и нуэжно чтобы все перезаписыовалось, но это при условии что данные введены правильные, а если неправильные мне форму убирать не нужно

  Ответить  
 
 автор: sim5   (02.01.2011 в 16:55)   письмо автору
 
   для: technic611   (02.01.2011 в 16:46)
 

<div id="myDiv" align="center">
<div id="error"></div>
......

$('#error).html(data);

Только надо проверять, что вернулась ошибка, и тогда выводить ее, иначе.... Ну а это уже завивит от вас, чего и как вы возвращаете с сервера.

  Ответить  
 
 автор: technic611   (02.01.2011 в 17:48)   письмо автору
 
   для: sim5   (02.01.2011 в 16:55)
 

ну это тоже самое чтоя выше прописал, вот в том и дело что нужно как то на стороне скрипта делать проверку, как это сделать я не знаю, ну а что с сервера и так понятно как возвращаю, через echo.

  Ответить  
 
 автор: sim5   (02.01.2011 в 17:49)   письмо автору
 
   для: technic611   (02.01.2011 в 17:48)
 

Вы уверены, что тоже самое? А проверку делают на сервере, а не на стороне скрипта, если вы стороной скрипта называете клиента.

  Ответить  
 
 автор: technic611   (02.01.2011 в 17:58)   письмо автору
 
   для: sim5   (02.01.2011 в 17:49)
 

ну это тогда заново форму нужно выводить скриптом, этоже громозкий код опять получается, если пароль неверный заменяем div с формой divом формой с ошибкой, если пароль верный -заменяем div с сообщением вы вошли так чтоле вы предлагаете?

  Ответить  
 
 автор: sim5   (02.01.2011 в 18:03)   письмо автору
 
   для: technic611   (02.01.2011 в 17:58)
 

Какую форму и каким скриптом? Вы не сображаете в JS нисколько, по вашим же словам, и еще при этом городите околесицу. Проверяйте:
<script>
function fnc(e) {
  var err = "Text ERROR";
  document.getElementById(e).innerHTML = err;
}
</script>

<div id="myDiv">
<div id="error"></div>
Содержимое родителя
</div>

<input type="button" value="in myDiv" onclick="fnc('myDiv')">
<input type="button" value="in error" onclick="fnc('error')">
Тоже самое в обеих случаях получается или нет? Вот это же вам и надо делать - выводить при наличии ошибки ее текст не в родителя, ибо все его содержимое будет перезаписано, а в элемент предназначенный для этого, но на jQuery.

  Ответить  
 
 автор: technic611   (02.01.2011 в 18:47)   письмо автору
 
   для: sim5   (02.01.2011 в 18:03)
 

да, не соображаю, иначе бы тут не спрашивал, логично? зачем вы предлагаете две кнопки? в моей форме кнопка одна и вызывает функцию одну

  Ответить  
 
 автор: sim5   (02.01.2011 в 19:07)   письмо автору
 
   для: technic611   (02.01.2011 в 18:47)
 

Я вам не предлагаю две кнопики, я вам предлагаю запустить у себя этот пример (он не требует подключения jQuery, это чистый JS), чтобы убедиться в том, что при нажатии первой содержимое родителя (вашего myDiv, что символизирует в примере строка текста) будет перезаписано содержимым ответа с сервера - в примере это текст "Text ERROR". Вот это у вас и происходит на данный моммент.

Я вам сказал как сделать можно, что в ответ? Вот и запустите пример по второй кнопке, дабы убедиться, что в данном случае, содержимое родителя не перезапишется (то что я вам изначально предложил), то есть у вас ваша форма никуда не исчезнет при выводе ошибок. Почему? Думайте, анализируйте, тем более я вам сказал причину.

Коли не понимаете, то хотя бы учитесь читать то, что вам пишут, а тем более выполнять примеры для уяснения. Вы же вместо этого бесполезные дискуссии разводите, словно у каждого на это есть время.

Что касается заново выводить форму, то это зачем? Проверка всего на сервере, и только на нем, тем более таких вещей как пароли. Будь это на клиенте и передавать ничего на сервер не надо было бы. Это то вы хоть понимаете или нет?

  Ответить  
 
 автор: technic611   (02.01.2011 в 19:44)   письмо автору
 
   для: sim5   (02.01.2011 в 19:07)
 

<script>
function FormClick () {
  var str = $("#myForm").serialize();
  $.post("handler.php", str, function(data) {
   if(data == "ok") { 
var err = "Неверный пароль"; 
 document.getElementById(e).innerHTML = err; 
}
  });
}
</script>


переделал так, почему то не работает (((((

в обработчике

<?
Пароль неравильный выводим 
echo "ок"
?>

  Ответить  
 
 автор: sim5   (02.01.2011 в 20:03)   письмо автору
 
   для: technic611   (02.01.2011 в 19:44)
 

Сервер вообще-то ожидает переменные и их значения, что у вас скрывается под str можно только гадать. Вы вообще уверены, что он у вас получает что-то?

Да и вообще, прежде чем все это мудрить, сперва нужно решить, какие данные будет принимать сервер, и что отдавать в ответ, потому как неверным может быть не только пароль, но и логин, а при верном вводе еще не мешало бы, либо перенаправить пользователя, либо...

е - в примере, это имя переменной под которой в функцию передается значение, которого у вас нет, и вместо этого надо писать в кавычках id элемента. Но коли вы уж применяете jQuery, то document.getElementById('error').innerHTML = err; это уж слишком, тем более пример обращения к объктам на нем у вас перед глазами:
$("#error").html(err);

  Ответить  
 
 автор: technic611   (02.01.2011 в 20:09)   письмо автору
 
   для: sim5   (02.01.2011 в 20:03)
 

тогда так, тожде не работает


<script>
function FormClick () {
  var str = $("#myForm").serialize();
  $.post("handler.php", str, function(data) {
   if(data == "ok") { 
var err = "Неверный пароль"; 
$("#myerror").html(err);
}
  });
}
</script>


а str конечно же содержит данные ввденные в форму, но они сейчас и ненужны

  Ответить  
 
 автор: sim5   (02.01.2011 в 20:10)   письмо автору
 
   для: technic611   (02.01.2011 в 20:09)
 

А с чего бы оно работало? Вы на сервере как получаете и что?

  Ответить  
 
 автор: technic611   (02.01.2011 в 20:16)   письмо автору
 
   для: sim5   (02.01.2011 в 20:10)
 

на сервер я получаю данные формы которые в str, проверяю их и делаю вывод что нужно вывести ок или еще что то, но это сейчас н еважно, я задумал что как будто пароль неверный

я выбрасил все проверки на сервере и просто вывожу, как будто пароль неправильный


<?

код провреки пароля логина и так далее

выяснили что пароль неверный
выводим

echo "ок"
?>

  Ответить  
 
 автор: sim5   (02.01.2011 в 20:37)   письмо автору
 
   для: technic611   (02.01.2011 в 20:16)
 

Вы на сервере получите две переменных (если отметите чекбокс, то три). Проверили, а далее ситуации:
1 - не верен логин и пароль
2 - не верен логин
3 - не верен пароль
4 - все верно
Вопрос - что нужно отдавать клиенту чтобы он понял ситуацию на сервере? Я же вам об этом упоминал выше. В данном случае лучшим решенеим будет возвращать клиенту данные в формате JSON (можно и строку с разделителем), в котором будет передаваться код состояния проверки и сообщение (в случае ОК, перенаправление, то есть адрес его).
А вы как хотите? По тексту понимать что случилось?

Заремируйте выдачу ответа в элемент и просто выведите ответ сервера:

alert(data);
//$("Myerror"").html(data);

Если сервер будет отвечать так: if($_POST) print_r($_POST);, то вы получите в окне:
Array
(
    [name] => значение
    [password] => значение
)
Ничего не получите, ищите баг у себя в скрипте серверном.

  Ответить  
 
 автор: technic611   (02.01.2011 в 20:50)   письмо автору
 
   для: sim5   (02.01.2011 в 20:37)
 

да все у меня получает сервер, у меня не выводится сообщение об ошибке. Alert не хочу ипользовать, хочу чтобы был текст непосредсвенно под формой. и ошибка не в серверном скрипте, там и ошибки быть не может
где тут ошибка?
<? echo "ok" ; ?>

  Ответить  
 
 автор: sim5   (02.01.2011 в 20:54)   письмо автору
 
   для: technic611   (02.01.2011 в 20:50)
 

Вы замучили своим упрямством! Я не заставляю использовать alert на странице, я просто говорю, как можно проверить ответ сервера, если у вас баг на странице с записью. И выбросите return false из вызова функции, оно там как собаке пятая лапа.

  Ответить  
 
 автор: technic611   (02.01.2011 в 20:55)   письмо автору
 
   для: sim5   (02.01.2011 в 20:37)
 

что нужно отдавать клиенту чтобы он понял ситуацию на сервере?
ну пусть это будет цифра 1 и как возвращать клиенту данные в формате JSON ?

  Ответить  
 
 автор: sim5   (02.01.2011 в 21:02)   письмо автору
 
   для: technic611   (02.01.2011 в 20:55)
 

Ну так и отдавайте, если все ОК, то 0, иначе ошибка. Просто код ошибки это более гибко, можно к примеру выводить ошибку у соответствуюещего поля. В случае ее отсутствия передать клиенту url, на который сделать перенаправление. Без кода ошибки это будет сделать сложнее.

  Ответить  
 
 автор: technic611   (02.01.2011 в 21:01)   письмо автору
 
   для: sim5   (02.01.2011 в 20:37)
 

пусть будет по вашему, только я ввобще не вижу разницы
<script>
function FormClick () {
  var str = $("#myForm").serialize();
  $.post("handler.php", str, function(data) {
   if(data == "1") { 
var err = "Неверный пароль или логин"; 
$("#myerror").html(err);
}

   if(data == "2") { 
var err = "Не верин логин"; 
$("#myerror").html(err);
}
  });
}
</script>


так чтоле?

  Ответить  
 
 автор: sim5   (02.01.2011 в 21:03)   письмо автору
 
   для: technic611   (02.01.2011 в 21:01)
 

Делайте как хотите. Я вас не заставляю делать "по моему", я вам просто говорю как можно.

  Ответить  
 
 автор: technic611   (02.01.2011 в 21:13)   письмо автору
 
   для: sim5   (02.01.2011 в 21:03)
 

вы так и не поняли что хоть код ошибки, хоть код здесь гд то непраивльно , не работает оно ((

 if(data == "1") { 
var err = "Неверный пароль"; 
$("#myerror").html(err);
}


если так сделать то работет

var err = "Неверный пароль"; 
$("#myerror").html(err);

  Ответить  
 
 автор: technic611   (02.01.2011 в 21:20)   письмо автору
 
   для: technic611   (02.01.2011 в 21:13)
 

оказалось надо было цифры использовать а не текст

  Ответить  
 
 автор: sim5   (02.01.2011 в 21:31)   письмо автору
 
   для: technic611   (02.01.2011 в 21:13)
 

Это вы не понимаете. Вот у меня все работает:
<?
if($_POST) {
  
$log "as";
  
$pas "sa";
  
$log $log==$_POST['name'] ? 1;
  
$pas $pas==$_POST['password'] ? 2;
  echo 
$log+$pas;
}
?>

function FormClick() { 
  var str = $("#myForm").serialize(); 
  $.post("handler.php", str, function(data) { 
     $("#error").text("Код возврата: " + data); 
  }); 
}

  Ответить  
 
 автор: technic611   (04.01.2011 в 01:20)   письмо автору
 
   для: sim5   (02.01.2011 в 21:31)
 

хотелось бы еще увидеть как jquery будет возвращать клиенту данные в формате JSON (можно и строку с разделителем), в котором будет передаваться код состояния проверки и сообщение?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования