• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Передача данных между блоками

Статус
В этой теме нельзя размещать новые ответы.

likarek

Создатель
Регистрация
21 Фев 2009
Сообщения
14
Реакции
0
Пишу модуль на AJAX'се и сталкнулся с проблемой, вот кусок кода
PHP:
$ajax_script = <<<HTML
<script language="javascript" type="text/javascript">
<!--
function do( event ){
	var ajax = new dle_ajax();
	var varsString = "";
        ajax.setVar("name", "$name" );
	ajax.setVar("text", "$text" );
	ajax.setVar("action", event);
	ajax.requestFile = dle_root + "engine/ajax/modul.php";
	ajax.method = 'GET';
	ajax.element = 'layer';
	ajax.sendAJAX(varsString);
}
//-->
</script>
HTML;
// ... кусок пропущен ... //
if( $_REQUEST['action'] == "menu" ) {
$main = "<form method=\"post\" action=\"\">
<div>Имя<br /><input type=\"Text\" name=\"name\" value=\"\"> </div>
<div>Сообщение<br /><textarea type=\"Text\" name=\"text\"></textarea></div>
<div><input onclick=\"do('results'); return false;\" name=\"send\" type=\"submit\" value=\"Отправить\" /></div></form>";
} elseif( $_REQUEST['action'] == "results" ) {
$main = "Вам пришло письмо<br /> Отправитель: $name<br /> Сообщение:<br />$text";
}
немогу передать данные из блока 'menu' в блок 'results' пытался так но возвращаем 0
PHP:
if( isset( $_REQUEST['name'] ) ) $name = intval( $_REQUEST['name'] );
if( isset( $_REQUEST['text'] ) ) $text = intval( $_REQUEST['text'] );
Подскажите в чем ошибка, каким образом можно передать данные из блока в блок
 
А ты проверил у тебя данные разьве передаются, я думаю тебе нужно не так
if( isset( $_REQUEST['name'] ) ) $name = intval( $_REQUEST['name'] );
if( isset( $_REQUEST['text'] ) ) $text = intval( $_REQUEST['text'] );
А через $_POST тянуть. то бишь данные у тебя из фомы уходят массивом post
 
пробовал и так, не помогло. :(
межет я неправильно составляю запросы, как их делать правильно?
 
Я бы сделал так:

HTML:
$ajax_script = <<<HTML 
<script language="javascript" type="text/javascript"> 
<!-- 
function do( event ){ 

	var form = document.getElementById('myform');
    var ajax = new dle_ajax();
	ajax.onShow ('');
	var varsString = "";
	ajax.setVar("name", ajax.encodeVAR(form.name.value));
        ajax.setVar("text", ajax.encodeVAR(form.text.value));
        ajax.setVar("action", event); 
	ajax.requestFile = dle_root + "engine/ajax/modul.php";
	ajax.method = 'POST';
	ajax.execute = true;
	ajax.element = 'layer';
	ajax.sendAJAX(varsString);
		return false;
} 
//--> 
</script> 
HTML; 
// ... кусок пропущен ... // 
if( $_REQUEST['action'] == "menu" ) { 
$main = "<form method=\"post\" action=\"\"  id=\"myform\"> 
<div>Имя<br /><input type=\"Text\" name=\"name\" value=\"\"> </div> 
<div>Сообщение<br /><textarea type=\"Text\" name=\"text\"></textarea></div> 
<div><input onclick=\"do('results'); return false;\" name=\"send\" type=\"submit\" value=\"Отправить\" /></div></form>"; 
} elseif( $_REQUEST['action'] == "results" ) { 
$main = "Вам пришло письмо<br /> Отправитель: $name<br /> Сообщение:<br />$text"; 
}

И в engine/ajax/modul.php массивом $_POST Потом лови что хочешь...
 
Спасибо Darksider, код работает ну ура, но вот возник вопрос каким образом можно задать время выполнения запроса, к примеру мне надо чтобы он обновился через 1,5 секунды
 
А что за модуль?:-]
Не поделитесь как доделаете?
 
Спасибо Darksider, код работает ну ура, но вот возник вопрос каким образом можно задать время выполнения запроса, к примеру мне надо чтобы он обновился через 1,5 секунды
Вот тут есть опсаность если сделать через тайм аут, то можно подвесить особенно если где-то есть запрос в бузу данных. Мне кажется нужно к событию привязываться, то есть не просто так функцию гонять, по времени.
 
т.е. как к событию? вот например я нажимаю отправить и выполняется скрипт который длится 1,5 сек.
в dle есть аякс, по умолчанию загрузку видно в центре страницы (загрузка плз подождите), если в функцию моего перехода вставить
PHP:
function do( event ){ 
document.getElementById("loading").innerHTML = '<img src="loading.gif" />';
// предыдущий пример
}
то тогда пока идет выполние следующего действия выполняется этот "loading", но все дело в том что выполняется "слишком" быстро видно тока "мерцание" моей загрузки, так вот как сделить чтобы он грузился дольше?может можно как то сделать не прибегая к дополнительным библиотекам типа jQuery, а то из за одной загрузки не рационально использовать к ним
 
Не поделитесь как доделаете?
Даже не знаешь что за модуль,а уже просишь поделиться... я фигееею.... вот до чего дожили...
По делу:

мне надо чтобы он обновился через 1,5 секунды

Для обновления бери функцию setInterval, вот наваял скрипт по бырому, посмотри че как:
HTML:
<script type="text/javascript">
function autoupd() {
  do('results'); return false;
}
setInterval(autoupd, 1000)
</script>
 
Даже не знаешь что за модуль,а уже просишь поделиться... я фигееею.... вот до чего дожили...
Халявщики, лишь бы что нибудь... что с ними поделаешь...


Что касается функции setInterval, так и непонял как ей воспользовать :( делал по примеру в результате или блок сам обновляется без участвия пользователя, или при нажатии на кнопку думает заданное время потом тупо перебрасывает на главную.

ее как нибудь можно вставить именно в эту функцию?

HTML:
function do( event ){ 
	var form = document.getElementById('myform');
	var ajax = new dle_ajax();
	ajax.onShow ('');
	var varsString = "";
	ajax.setVar("name", ajax.encodeVAR(form.name.value));
	ajax.setVar("text", ajax.encodeVAR(form.text.value));
	ajax.setVar("action", event); 
	ajax.requestFile = dle_root + "engine/ajax/modul.php";
	ajax.method = 'POST';
	ajax.execute = true;
	ajax.element = 'layer';
	ajax.sendAJAX(varsString);
	return false;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху