[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите обьяденить AJAX c javascript
NoCash
добырй день форумчане. у меня возникла такая проблемма выполняю проврку заполнения полей JAVASCRIPT'ом все работает гуд! проверяю капчу на правильность c помощью AJAX впринципе тоже работает! возникает проблемма в том когда, заполнена вся форма и все поля кроме капчи обьявления все равно добавляется а капча не проверяется. если же поля заполненны не все то капча успешно проверяется подскажите как быть?
код прилогается напишу <php> чтобы подсвечивало в коде этого тега нет)

<?php
var req
= Create();

function ge(id)
{
return document.getElementById(id);
}

function Create(){
if(navigator.appName == "Microsoft Internet Explorer"){
req = new ActiveXObject("Microsoft.XMLHTTP");
}else{
req = new XMLHttpRequest();
}
return req;
}

function Request(query)
{
req.open('post', 'check_captcha.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}

function Refresh()
{
if( req.readyState == 4 )
ge('ajax').innerHTML = req.responseText;
else
ge('ajax').innerHTML = '<img src="prel.gif" />';

}
function Pusk()
{
var query;

query ='txt='+encodeURIComponent(ge('myid').value);
Request(query);

}
// Проверка введенного имени и сообщения и "включение" кнопки submit
function checkreq() {
path=document.nb_form2;
tmp=(path.gnl_name.value=="");
if (!tmp && (path.gnl_name.value.length < 3)) tmp=true;
path.nb_submit2.disabled=tmp;
if (tmp) return;
tmp=(path.detail.value=="");
if (!tmp && (path.gnl_detail.value.length < 10)) tmp=true;
path.nb_submit2.disabled=tmp;
}
// Проверка корректности заполнения полей формы
function check() {

p_gnl_user=document.nb_form2.gnl_user.value.toString();
if (p_gnl_user=="") {
alert ("введите цену");
return false;

}
p_gnl_name=document.nb_form2.gnl_name.value.toString();
if (p_gnl_name!="") {
if (p_gnl_name.length<3 || p_gnl_name.length>20) {
alert ("Укажите заголовок (3-20 символов)!");
document.nb_form2.gnl_name.focus();
return false;
}
}
else {
alert("Необходимо ввести заголовок!");
document.nb_form2.gnl_name.focus();
return false;
}
p_cat_name=document.nb_form2.elements[3].selectedIndex;
if (p_cat_name== 0) {
alert ("вибирите категорию и подкатегорию");
return false;
}
p_gnl_phone=document.nb_form2.gnl_phone.value.toString();
if (p_gnl_phone.length<5 || p_gnl_phone.length>9) {
alert ("Длина номера 5-9 символов!");
document.nb_form2.gnl_phone.focus();
return false;
}
p_gnl_phone=document.nb_form2.gnl_phone.value;
p_gnl_email=document.nb_form2.gnl_email.value;
if ((p_gnl_phone =="")&&((p_gnl_email=="") || (p_gnl_email.indexOf ('@') == -1) || (p_gnl_email.indexOf ('.') == -1))) {
alert ("Введите коректный E-mail");
}
p_gnl_detail=document.nb_form2.gnl_detail.value.toString();
if (p_gnl_detail.length < 10) {
alert ("Необходимо ввести текст сообщения (не менее 10 символов)!");
document.nb_form2.gnl_detail.focus();
return false;
}

p_gnl_price=document.nb_form2.gnl_price.value.toString();
if (p_gnl_price=="") {
alert ("введите цену");
return false;

}
p_code=document.nb_form2.code.value.toString();
if (p_code=="") {
alert ("");
return false;
}
}

?>





Спустя 12 минут, 21 секунда (25.03.2010 - 13:09) NoCash написал(а):
все разобрался

Спустя 3 дня, 22 часа, 36 минут, 29 секунд (29.03.2010 - 10:46) NoCash написал(а):
вру не разобрался( подаскажите каким образом

var req = Create();

function ge(id)
{
return document.getElementById(id);
}

function Create(){
if(navigator.appName == "Microsoft Internet Explorer"){
req = new ActiveXObject("Microsoft.XMLHTTP");
}else{
req = new XMLHttpRequest();
}
return req;
}

function Request(query)
{
req.open('post', 'check_captcha.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}

function Refresh()
{
if( req.readyState == 4 )
ge('ajax').innerHTML = req.responseText;
else
ge('ajax').innerHTML = '<img src="prel.gif" />';

}
function Pusk()
{
var query;

query ='txt='+encodeURIComponent(ge('myid').value);
Request(query);

}

вставить в обработку javascript что бы при неправельном ответе скрипт не выполнялся полностью а выдвалось сообщение что неправильно введен код?

Спустя 11 минут, 55 секунд (29.03.2010 - 10:57) twin написал(а):
Сессию надо юзать.

Спустя 1 час, 35 минут, 21 секунда (29.03.2010 - 12:33) NoCash написал(а):
разжуйте пожайлуста, а то я новичек еще во всем этом. у меня имеется форма с заолнением потом файл JS который все это проверяет и php код с сессией к которой обращается аякс и выводит на страничку что код не верен. часть проверки приведена выше, как раз та которая обращается и выводит сообщение что код не верен. остальные коды привожу тут
<?php
session_start();
header("Content-type: text/html; charset=windows-1251");
$txt= isset($_POST['code'])?$_POST['code']:NULL;

if(strtolower($txt) == $_SESSION['name'])
{
echo '<font color="green">бодрячком!</font>';
} else
{
echo '<font color="red">Двоешник!</font>';
}
?>


[code]
<?php
$text ="<form method='post' enctype='multipart/form-data' name='nb_form2' action='". $PHP_SELF ."' onsubmit='return check()' >
<table class='border' style='width:100%'><tr><td class='forumheader3' style='text-align:center'><div id='ajax'></td>
<td class='forumheader3'><input type='text' name='code' id='myid'></div><br>Решите пример с картинки<br><img src='captcha.php' border='0' > </td></tr>";
}
$text .="<tr><td class='forumheader3'></td><td><input type='submit' name='nb_submit2' value='Опубликовать обьявление' onclick='Pusk()' ></td></tr></table></form>";
?>

Спустя 29 минут, 27 секунд (29.03.2010 - 13:02) NoCash написал(а):
гуру вы где отзовитесь

Спустя 2 часа, 44 минуты, 1 секунда (29.03.2010 - 15:46) twin написал(а):
<input type='submit' name='nb_submit2' value='Опубликовать обьявление' onclick='Pusk()' >

вот тут кнопка сабмит. Это значит ты форму отправляешь в любом случае, потому и плохо все. Нужно отправить запрос аяксом, тогда и получится ответ.

Спустя 18 часов, 34 минуты, 55 секунд (30.03.2010 - 10:21) NoCash написал(а):
<onclick='Pusk()'>
вот тут отправляется аяксом.
или я что то не так понимаю?

Спустя 17 минут, 43 секунды (30.03.2010 - 10:39) twin написал(а):
Не, все верно. Только не понятно, у тебя две формы? Одна с данными, другая с капчей, так?

Спустя 19 минут, 7 секунд (30.03.2010 - 10:58) NoCash написал(а):
нет капча в тойже форме где и данные

Спустя 54 секунды (30.03.2010 - 10:59) NoCash написал(а):
привожу код формы

$text ="<form method='post' enctype='multipart/form-data' name='nb_form2' action='". $PHP_SELF ."' onsubmit='return check()'>
<table
class='border' style='width:100%'>";
if (USER==FALSE){
$text .="<tr><td class='forumheader3'>Введите имя</td><td class='forumheader3' width='70%'>
<input
type='text' name='gnl_user' value='";
if (isset($_COOKIE["gnl_user"])) $text .=$_COOKIE["gnl_user"];
$text .= "'
></td>";
}

$text .= "<tr><td class='forumheader3'>".NB_NAME_1."</td><td class='forumheader3' width='70%'>
<input
type='text' name='gnl_name' value='' maxlength=20 onkeypress='checkreq()' onkeyup='checkreq()' onblur='checkreq() '></div></td></tr>";
$text .= "<tr><td class='forumheader3'>".NB_MCAT_2."</td><td class='forumheader3' width='70%'><form enctype='multipart/form-data' method=post><select class='tbox' name='cat_name' id='cat' onChange='process()'>";
$text .="<option value=''>".NB_MES_2."";
$sql -> db_Select("nb_cat", "*", "");
while($row = $sql -> db_Fetch()){
$cat_id = $row['cat_id'];
$cat_name = $row['cat_name'];
$text .="<option value='$cat_id'>$cat_name";
}
$text .= "<tr>
<td
class='forumheader3'>".NB_MSCAT_1."</td><td class='forumheader3' width='70%'><select class='tbox' id='sub' name='cat_name'><option value=''>".NB_MES_3."</select></td></tr>
<tr>
<td
class='forumheader3'>".NB_NAME_2."</td><td class='forumheader3' width='70%'>
<input
type='text' name='gnl_city' value='' maxlength=20 onkeypress='checkreq()' onkeyup='checkreq()' onblur='checkreq()'></td>";
if (!FILE_UPLOADS)
{
$text .= "<b>".LAN_UPLOAD_SERVEROFF."</b>";
}
else
{

if (!is_writable(e_PLUGIN."nboard/images/nb_pictures/"))
{
$text .= LAN_UPLOAD_777."<b>".str_replace("../","",e_PLUGIN."nboard/images/nb_pictures/")."</b><br /><br />";
}

$up_value = array("resize");

$text .= "<div id='up_container' >
<span
id='upline' style='white-space:nowrap'><tr><td class='forumheader3'>".NB_IMG_1."<td class='forumheader3' width='70%'><input class='tbox' name='file_userfile[]' type='file' size='47'><br>Пожалуйста, загружайте изображения с разрешением не более чем 640х480 пикселов.</td></tr>";

$text .="</div>";

}
$text .= "<tr><td class='forumheader3'>".NB_NAME_4."</td><td class='forumheader3' width='70%'>
<input
type='text' name='gnl_phone' value='' maxlength=9 onKeyPress ='if ((event.keyCode < 48) || (event.keyCode > 57)) event.returnValue=false;'></td>";
if (USER==FALSE)
{
$text .= "<tr><td class='forumheader3'>".NB_MAIL_1."</td><td class='forumheader3' width='70%'>
<input
type='text' name='gnl_email' value='".USEREMAIL."'></td>";
}
else {
$text .= "<tr><td class='forumheader3'></td><td class='forumheader3' width='70%'>
<input
type='hidden' name='gnl_email' class='tbox' style='width:150px' value='".USEREMAIL."'>";
}
$text .="<tr><td class='forumheader3'>".NB_NAME_5."</td><td class='forumheader3' width='70%'>
<textarea
name='gnl_detail' cols=35 rows=10 onkeypress='checkreq()' onkeyup='checkreq()' onblur='checkreq()'></textarea></td>
<tr><td
class='forumheader3'>".NB_NAME_8."</td><td class='forumheader3' width='70%'>
<input
type='text' name='gnl_price' value='' maxlength=20 onkeypress='checkreq()' onkeyup='checkreq()' onblur='checkreq()'></td>";


$text .= "<tr><td class='forumheader3'>Выбирите количество деней публикации объявления</td> <td class='forumheader3'><select class='tbox' name='days'>";
$text .= "<option value='7'>7 Дней</option>";
$text .= "<option value='14'>14 Дней</option>";
$text .= "<option selected value='30'>30 Дней</option>";
$text .= "</select></td></tr>";
$text .="<input type='hidden' name='gnl_date' class='tbox' style='width:150px' value='$gnl_date'>
<input
type='hidden' name='gnl_kikoz' class='tbox' style='width:150px' value='$gnl_kikoz'>";

if (USER==FALSE)
{
$text .="<tr><td class='forumheader3' style='text-align:center'><div id='ajax'></td>
<td
class='forumheader3'><input type='text' name='code' id='myid'></div><br>Решите пример с картинки<br><img src='captcha.php' border='0' > </td></tr>";
}
$text .="<tr><td class='forumheader3'></td><td><input type='submit' name='nb_submit2' value='Опубликовать обьявление' onclick='Pusk();' ></td></tr></table></form>";
$caption = NB_NAME_6;
$ns -> tablerender($caption, $text);
require_once(FOOTERF);
?>

Спустя 23 часа, 26 минут, 10 секунд (31.03.2010 - 10:25) NoCash написал(а):
блин ну подскажите как в ajax использовать значение сессии

Спустя 3 минуты, 19 секунд (31.03.2010 - 10:28) twin написал(а):
Точно так же, как и без него. В файле captcha.php сессия стартанута?

Спустя 14 минут, 4 секунды (31.03.2010 - 10:42) NoCash написал(а):
да в captcha.php сессия стартанула и на файле где проверяется форма тоже стартанула
Цитата (twin @ 31.03.2010 - 07:28)
Точно так же, как и без него.

тогда почему при проверке в ajax сессия не обнаруживается из за чего скрипт пропускает проверку?
или может я что то не так делаю( а не могли бы вы привести пример использования? буду очень прищнателен

Спустя 32 минуты, 43 секунды (31.03.2010 - 11:15) twin написал(а):
Изучай

Спустя 31 минута, 32 секунды (31.03.2010 - 11:47) NoCash написал(а):
это конечно все хорошо и спс за скрипт) ну я похоже неправильно выразился.
мне нужно в условии прописать так. если в <div id='ajax'> ,будет выведенно "двоеник" то не добавлять обьявление тобишь оставновить скрипт как я понимаю вот в этом вся загвозка

Спустя 5 минут, 44 секунды (31.03.2010 - 11:52) NoCash написал(а):
ну или как вариант пробывал вот так сессию не видим( а очень нужно
p_code=document.nb_form2.code.value.toString();
if (p_code=="" || p_code!=$_SESSION['name'])
{
alert ('двоешник');
return false;
}

Спустя 34 минуты, 48 секунд (31.03.2010 - 12:27) twin написал(а):
Я прекрасно понимаю что нужно в итоге. Однако вопрос был
Цитата
как в ajax использовать значение сессии

Я показал.
А дальше нужно условие, если ответ "бодрячком" - сабмитим форму.
Ну вот так изучай:

Спустя 1 час, 4 минуты, 19 секунд (31.03.2010 - 13:32) NoCash написал(а):
вроде разобрался только вот сейчас совсем не добавляется обьявление(

Спустя 2 часа, 4 минуты, 3 секунды (31.03.2010 - 15:36) NoCash написал(а):
если я не ошибаюсь то в условии
   function Refresh()
{
var subm = '';

if( req.readyState == 4 )
subm = req.responseText;
if(subm == 'бодрячком!'){
ge('nb_form2').submit();
}
else
ge('ajax').innerHTML = subm;
}
где то ошибка потомучто
 ge('ajax').innerHTML = subm;
срабатывает в люом случае(

Спустя 2 минуты, 40 секунд (31.03.2010 - 15:38) twin написал(а):
это не мой код... вообще "бодрячком" это шутка же. Поствь туда что нибудь более приемлимое. 200 например.

Спустя 14 минут, 38 секунд (31.03.2010 - 15:53) NoCash написал(а):
да суть не в надписи бодрячком или 200 да хоть абра кадабра)) subm записывается из файла captcha_check.php и значение записывает в <id='ajax'> и если код с картинки совпадает с текстом введенным пользователем то поидее должно сабмиться
   if(subm == 'бодрячком!'){
ge('nb_form2').submit();
}
а у нас все равно срабатывает условие под else т.е
ge('ajax').innerHTML = subm;
правильно рассуждаю?

Спустя 8 минут, 3 секунды (31.03.2010 - 16:01) twin написал(а):
У меня не срабатывает. Запусти скрипт из аттача ничего не меняя. Там все работает.

Спустя 17 часов, 40 минут, 42 секунды (1.04.2010 - 09:42) NoCash написал(а):
из аттача действительно все гуд) получается эт я где то накосячил(

Спустя 8 минут, 13 секунд (1.04.2010 - 09:50) NoCash написал(а):
подключил к файлу из аттача свою капчу и все перестало работать тупо выводит двоешник или бодрячком

Спустя 2 часа, 41 минута, 52 секунды (1.04.2010 - 12:32) NoCash написал(а):
все всем спс) разобрался twin +1 к карме
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.