|
|
|
| есть форма для входа на сайт
<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"> </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 об ошибке, что нужно дописать в скрипте? помогите только начал изучать | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 16:31)
| | Ну вы же сами перезаписываете содержимое div тем, что возвращает сервер, вот здесь:
$("#myDiv").html(data);
Создайте в div елемент, тот же div или span, и ему прописывайте возвращаемое. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 16:38)
| | можно пример как вы это видите?
мне так и нуэжно чтобы все перезаписыовалось, но это при условии что данные введены правильные, а если неправильные мне форму убирать не нужно | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 16:46)
| | <div id="myDiv" align="center">
<div id="error"></div>
......
$('#error).html(data);
Только надо проверять, что вернулась ошибка, и тогда выводить ее, иначе.... Ну а это уже завивит от вас, чего и как вы возвращаете с сервера. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 16:55)
| | ну это тоже самое чтоя выше прописал, вот в том и дело что нужно как то на стороне скрипта делать проверку, как это сделать я не знаю, ну а что с сервера и так понятно как возвращаю, через echo. | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 17:48)
| | Вы уверены, что тоже самое? А проверку делают на сервере, а не на стороне скрипта, если вы стороной скрипта называете клиента. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 17:49)
| | ну это тогда заново форму нужно выводить скриптом, этоже громозкий код опять получается, если пароль неверный заменяем div с формой divом формой с ошибкой, если пароль верный -заменяем div с сообщением вы вошли так чтоле вы предлагаете? | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 18:03)
| | да, не соображаю, иначе бы тут не спрашивал, логично? зачем вы предлагаете две кнопки? в моей форме кнопка одна и вызывает функцию одну | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 18:47)
| | Я вам не предлагаю две кнопики, я вам предлагаю запустить у себя этот пример (он не требует подключения jQuery, это чистый JS), чтобы убедиться в том, что при нажатии первой содержимое родителя (вашего myDiv, что символизирует в примере строка текста) будет перезаписано содержимым ответа с сервера - в примере это текст "Text ERROR". Вот это у вас и происходит на данный моммент.
Я вам сказал как сделать можно, что в ответ? Вот и запустите пример по второй кнопке, дабы убедиться, что в данном случае, содержимое родителя не перезапишется (то что я вам изначально предложил), то есть у вас ваша форма никуда не исчезнет при выводе ошибок. Почему? Думайте, анализируйте, тем более я вам сказал причину.
Коли не понимаете, то хотя бы учитесь читать то, что вам пишут, а тем более выполнять примеры для уяснения. Вы же вместо этого бесполезные дискуссии разводите, словно у каждого на это есть время.
Что касается заново выводить форму, то это зачем? Проверка всего на сервере, и только на нем, тем более таких вещей как пароли. Будь это на клиенте и передавать ничего на сервер не надо было бы. Это то вы хоть понимаете или нет? | |
|
|
|
|
|
|
|
для: 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 "ок";
?>
|
| |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 19:44)
| | Сервер вообще-то ожидает переменные и их значения, что у вас скрывается под str можно только гадать. Вы вообще уверены, что он у вас получает что-то?
Да и вообще, прежде чем все это мудрить, сперва нужно решить, какие данные будет принимать сервер, и что отдавать в ответ, потому как неверным может быть не только пароль, но и логин, а при верном вводе еще не мешало бы, либо перенаправить пользователя, либо...
е - в примере, это имя переменной под которой в функцию передается значение, которого у вас нет, и вместо этого надо писать в кавычках id элемента. Но коли вы уж применяете jQuery, то document.getElementById('error').innerHTML = err; это уж слишком, тем более пример обращения к объктам на нем у вас перед глазами:
$("#error").html(err); | |
|
|
|
|
|
|
|
для: 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 конечно же содержит данные ввденные в форму, но они сейчас и ненужны | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 20:09)
| | А с чего бы оно работало? Вы на сервере как получаете и что? | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 20:10)
| | на сервер я получаю данные формы которые в str, проверяю их и делаю вывод что нужно вывести ок или еще что то, но это сейчас н еважно, я задумал что как будто пароль неверный
я выбрасил все проверки на сервере и просто вывожу, как будто пароль неправильный
<?
код провреки пароля логина и так далее
выяснили что пароль неверный, выводим
echo "ок";
?>
|
| |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 20:16)
| | Вы на сервере получите две переменных (если отметите чекбокс, то три). Проверили, а далее ситуации:
1 - не верен логин и пароль
2 - не верен логин
3 - не верен пароль
4 - все верно
Вопрос - что нужно отдавать клиенту чтобы он понял ситуацию на сервере? Я же вам об этом упоминал выше. В данном случае лучшим решенеим будет возвращать клиенту данные в формате JSON (можно и строку с разделителем), в котором будет передаваться код состояния проверки и сообщение (в случае ОК, перенаправление, то есть адрес его).
А вы как хотите? По тексту понимать что случилось?
Заремируйте выдачу ответа в элемент и просто выведите ответ сервера:
alert(data);
//$("Myerror"").html(data);
Если сервер будет отвечать так: if($_POST) print_r($_POST);, то вы получите в окне:
Array
(
[name] => значение
[password] => значение
)
| Ничего не получите, ищите баг у себя в скрипте серверном. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 20:37)
| | да все у меня получает сервер, у меня не выводится сообщение об ошибке. Alert не хочу ипользовать, хочу чтобы был текст непосредсвенно под формой. и ошибка не в серверном скрипте, там и ошибки быть не может
где тут ошибка?
<? echo "ok" ; ?> | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 20:50)
| | Вы замучили своим упрямством! Я не заставляю использовать alert на странице, я просто говорю, как можно проверить ответ сервера, если у вас баг на странице с записью. И выбросите return false из вызова функции, оно там как собаке пятая лапа. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 20:37)
| | что нужно отдавать клиенту чтобы он понял ситуацию на сервере?
ну пусть это будет цифра 1 и как возвращать клиенту данные в формате JSON ? | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 20:55)
| | Ну так и отдавайте, если все ОК, то 0, иначе ошибка. Просто код ошибки это более гибко, можно к примеру выводить ошибку у соответствуюещего поля. В случае ее отсутствия передать клиенту url, на который сделать перенаправление. Без кода ошибки это будет сделать сложнее. | |
|
|
|
|
|
|
|
для: 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>
|
так чтоле? | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 21:01)
| | Делайте как хотите. Я вас не заставляю делать "по моему", я вам просто говорю как можно. | |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 21:03)
| | вы так и не поняли что хоть код ошибки, хоть код здесь гд то непраивльно , не работает оно ((
if(data == "1") {
var err = "Неверный пароль";
$("#myerror").html(err);
}
|
если так сделать то работет
var err = "Неверный пароль";
$("#myerror").html(err);
|
| |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 21:13)
| | оказалось надо было цифры использовать а не текст | |
|
|
|
|
|
|
|
для: technic611
(02.01.2011 в 21:13)
| | Это вы не понимаете. Вот у меня все работает:
<?
if($_POST) {
$log = "as";
$pas = "sa";
$log = $log==$_POST['name'] ? 0 : 1;
$pas = $pas==$_POST['password'] ? 0 : 2;
echo $log+$pas;
}
?>
|
function FormClick() {
var str = $("#myForm").serialize();
$.post("handler.php", str, function(data) {
$("#error").text("Код возврата: " + data);
});
}
|
| |
|
|
|
|
|
|
|
для: sim5
(02.01.2011 в 21:31)
| | хотелось бы еще увидеть как jquery будет возвращать клиенту данные в формате JSON (можно и строку с разделителем), в котором будет передаваться код состояния проверки и сообщение? | |
|
|
|