[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: побороть аякс
Krevedko
Значится требуется создать что-то вроде формы анкетирования. Т.е. появляется вопрос, выбираем вариант ответа, жмем следующий, появляется следующий вопрос (без перезагрузки страницы). Когда вопросы заканчиваются, в этом же окне должны появится все наши ответы + еще там табличка на хтмл... Ах да..еще обязательно должно помнить, на каком мы вопросе находимся. Т.е. если страницу обновить, не должно скидывать в начало.
Значит что сделал я (а я в аяксе ноль, вчера полдня сидел разбирался).
Часть хтмл кода:

<div id="test">
<div
id="ajax">
<?php
echo question($_SESSION['num']); ?>
</div>
</div>

<div
id="answer" onClick="Request()"></div>


собственно аякс

var req = Create();

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


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


function Refresh()
{
if ( num > 10 )
{
document.getElementById('sms').style.display='block';
document.getElementById('ajax').style.display='none';
}
else if( req.readyState == 4 )
if (req.status == 200)
{
document.getElementById('ajax').innerHTML = req.responseText;
}
}



Я тут не делал, чтобы запоминало ответы...не получается. Пытаюсь их в сессию пихать, почему-то не запоминает.

Пых -файл, вызываемый аяксом:


session_start();

if(!isset($_SESSION['num']))
{
$_SESSION['num'] = 1;
}
else
{
$_SESSION['num'] ++;
}

include dirname(__FILE__) .'/questions.php';
echo question($_SESSION['num']);


И второй пых файл, который questions.php (он используется и аяксом и выше в хтмл форме там, где <div id="ajax">
<?php echo question($_SESSION['num']); ?>
</div> ) Это сделано, чтобы при обновлении не сбрасывало вопрос на первый..это кстати работает.
Вот его часть:

function question($q)
{
switch ($q)
{
case 2:
return '<strong>Вопросы: 2 из 10</strong>
<div class="question">Ваш пол:</div><br /><br />
<input id="q2" name="q2" type="radio" value="1" checked />Женский<br /><br />
<input id="q2" name="q2" type="radio" value="2" />Мужской<br /><br />'
;
break;

case 3:
$result = '<strong>Вопросы: 3 из 10</strong>
<div class="question">Ваш возраст:</div><br /><br />
<select id="q3" name="q3" style="width:130px; height:23px;">
<option selected="selected">менее 18</option>'
;
for ($i = 18; $i < 71; $i++)
{
$result .= '<option>' . $i . '</option>';
}
$result .= '<option>более 70</option></select><br /><br />';
return $result;
break;
.............................



Не работает вот это
document.getElementById('sms').style.display='block';
document.getElementById('ajax').style.display='none';
Т.е. я сделал в этом же хтмл-е нивидимый блок и чтобы при достижении нужного вопроса(последнего) форму с вопросами скрывало, а нужную мне открывало.
переменная num соответственно равна
var num = '<?php echo $_SESSION["num"]; ?>';

только вот не работает оно. где бы я ее не ставил. В главном индексе если...он ее видит ессно только при обновлении страницы. А в аяксовом файле прямо в той функции с условием он вообще не понимает ее...и alert(num) мне так и выдает <?php echo $_SESSION["num"]; ?>
Вообщем запутался я..помогите люди добрые unsure.gif



Спустя 9 минут, 52 секунды (28.01.2010 - 15:36) Gradus написал(а):
Цитата
alert(num) мне так и выдает <?php echo $_SESSION["num"]; ?>

Ну пропиши что бы в js файлах php работал , либо переделать файл в php и хедером сказать что это js файл.

Спустя 33 секунды (28.01.2010 - 15:37) Krevedko написал(а):
эээ..можно с этого места подробнее )
я не очень рублю в яве )
где-то на уровне гетелементбайайди и иннерхтмл )

Спустя 5 минут, 50 секунд (28.01.2010 - 15:43) Gradus написал(а):
да тут не в яве дело smile.gif
если в php файле , то пишем
 
<?php header("Content-Type: text/javascript"); ?>
var
num = '<?php echo $_SESSION["num"]; ?>';

а вот где разрешать php в файлах по типу я непомню к сожалению smile.gif

Спустя 23 минуты, 2 секунды (28.01.2010 - 16:06) qpayct написал(а):
а чему у тебя равен num ?
function Refresh() 
{
if ( num > 10 )
{



+ ты ничего не передаёшь в POST
req.send(null); 

попробуй передать а потом обрабатывай
req.send(param1=param1&param2=param2.....); 

Спустя 6 минут, 20 секунд (28.01.2010 - 16:12) Krevedko написал(а):
я ж говорю пишу в функции вот так
function Refresh()
{
var num = '<?php echo $_SESSION["num"]; ?>';
if ( num > 10 )
{

он не воспринимает пых-код....то, о чем писал Градус.

А параметры я передавал..фаербаг писал, чтовсе нормально передается. Но в почему-то в сессию они не хотели записываться sad.gif

Спустя 9 минут, 39 секунд (28.01.2010 - 16:22) arlamar написал(а):
щас буду советовать то, чего никогда сам не пробовал)) некогда тестить
//тут ява скрипт
var num=<?php echo $_SESSION['num']; ?>;
//и дальше ява скрипт

и обозвать этот файл getjs.php

попробуй может сработает

Спустя 4 минуты, 57 секунд (28.01.2010 - 16:27) Krevedko написал(а):
ага..вот нашел еще тоже самое
http://xpoint.ru/forums/programming/java/thread/44777.xhtml

буду читать вообщем )

Спустя 1 минута, 24 секунды (28.01.2010 - 16:28) glock18 написал(а):
Бедные java и javascript программисты. Им, наверно, очень не нравится, что эти языки постоянно обзывают одинаково.

Спустя 3 минуты, 2 секунды (28.01.2010 - 16:31) Krevedko написал(а):
лень было писать столь длинное название :р

Спустя 59 минут, 12 секунд (28.01.2010 - 17:30) glock18 написал(а):
Надеюсь, что решение ты уже нашел, потому что мне лень его сюда писать tongue.gif

Спустя 18 минут, 13 секунд (28.01.2010 - 17:48) Krevedko написал(а):
а я в тебе никогда и не сомневался
Быстрый ответ:

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