[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Получение инфы AJAX
z3rg
Здраствуйте, интересует такой вопрос, можно ли получить инфу с 1 php файла и вывести ее в разных местах, тоесть php будет выводить 2 параметра.

нужно для того чтоб не получать 2 раза 1 и тотже документ с интернета



Спустя 21 минута, 4 секунды (6.09.2009 - 11:27) terret написал(а):
z3rg
Если я вас правильно понял, то нет.
PHP - это скриптовый язык, он исполнился один раз, и все. Никакой ajax тут не поможет.
Другое дело, что вы можете например с помощью php вывести xml, потом его распарсить на странице... ну, сами понимаете, легче лишний запрос сделать))

Спустя 6 минут, 6 секунд (6.09.2009 - 11:33) Sylex написал(а):
z3rg
конечно, можно

Спустя 1 час, 19 минут, 44 секунды (6.09.2009 - 12:53) z3rg написал(а):
terret, пхп выведет к примеру "sdgsgsdgsdg:::::4343434" и нужно цифры разместить в 1 блок, буквы в другой.
тоесть разбить, типа как на пхп эксплоде

Sylex, спасибо.

тогда вопрос как на джава разбить текст?
спасибо нашол функция split(":::::");

зы: если совсем не оборзел, почему при множественном нажатии на разные ячейки выполняется/только последний клик ?
(php скрипт выполняется 2-3 сек)

или нужно на аджакс фором обробатывать множественные, и тогда оно будет ожидать пока выполнится 1?

Спустя 2 часа, 25 минут, 9 секунд (6.09.2009 - 15:18) Гость_hara написал(а):
скорее всего выполняется всё, но вы видите результат только последнего запроса.
а вообще что бы не было таких ситуаций, нужно блокировать другие запросы пока не выполниться первый.

Спустя 1 час, 7 минут, 2 секунды (6.09.2009 - 16:25) z3rg написал(а):
Гость_hara, а мне собственно нужно выполнить массу запросов сразу, тоесть чтоб запустил скрипт, он вывел массив и затем начали выполнятся на автомате аджакс запросы.

HTML
var global_id = "";
function showHint(str,str1)
{

xmlhttp=GetXmlHttpObject();


if (xmlhttp==null)
{
alert ("Your browser does not support XMLHTTP!");
return;
}
var url="includes/pear/example.php";
url=url+"?q="+str;
xmlhttp.onreadystatechange=stateChanged;
global_id="txtHint" + str1;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);

}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
var mass=xmlhttp.responseText.split(":::::");
document.getElementById(global_id).innerHTML=mass[0];

if(mass[1]>1000 || mass[1]==0){
mass[1]=\'<font color="#FF0000">\'+mass[1]+\'</font>\';
}
document.getElementById("ping"+global_id).innerHTML=mass[1];
}else {
document.getElementById(global_id).innerHTML=\'<img src="img/prel.gif" />\';
document.getElementById("ping"+global_id).innerHTML=\'<img src="img/prel.gif" />\';
}
}


function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}


идет запуск события showHint("blabla", 1); showHint("trulala", 2); ...
и вот как можно сделать чтоб либо задержка ожидания была либо в потоке проверяло, чета немогу догнать, пробовал переменные массивом делать но что-то вобще перестало выполнятся. через фор запуск функций тож делал, думал ожидать будет а оно не хочет.

Спустя 1 час, 9 минут, 16 секунд (6.09.2009 - 17:34) hara_ написал(а):
ну как вариант:
1. делаешь trigger // ну.. как то выразился коряво,
короче в начале функции showHint записываешь в какую нибудь глобальную переменную
значение например 1 ну значит процесс идёт
и в конце как прийдёт ответ от сервера записываешь 0 - значит процесс закончился
(или по таймауту, - если раньше произойдёт)

2. бесконечный цикл while в котором идёт проверка если сейчас не выполняется никакой
запрос(переменная содержит 0 или не суть что там) то запускаем следующий запрос по списку

вариант 2:

делаем массив с запросами глобальным
функция showHint в результате выполнения(вернулся ответ или таймаут)
запускает сама себя рекурсивно, но с другими параметрами, ну то есть по списку дальше


я голосую за второй вариант)

UPD
да и массив глобальным делать ненужно, просто передавай этот самый массив в свою функцию
showHint - она просто выполняет из него первый элемент,
уменьшает массив
затем запускает себя же с этим же но отредактированным массивом

Спустя 21 час, 34 минуты, 49 секунд (7.09.2009 - 15:09) z3rg написал(а):
hara, мммм, спасибо большое smile.gif , смысл понял, будем пробовать.

hara еще раз спасибо, получилось, делал последним способом.

HTML
var xmlhttp


var global_id = "";
var schet = "";
var fsfsf = "";
function showHint(str1,fsss)
{
fsfsf = fsss;
schet = str1;
str = document.getElementById("siteurl" + str1).value;
xmlhttp=GetXmlHttpObject();

if (xmlhttp==null)
{
alert ("Your browser does not support XMLHTTP!");
return;
}
var url="includes/pear/example.php";
url=url+"?q="+str;
xmlhttp.onreadystatechange=stateChanged;
global_id="txtHint" + str1;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
var mass=xmlhttp.responseText.split(":::::");
document.getElementById(global_id).innerHTML=mass[0];

if(mass[1]>1000 || mass[1]==0){
mass[1]=\'<font color="#FF0000">\'+mass[1]+\'</font>\';
}
document.getElementById("ping"+global_id).innerHTML=mass[1];

if(schet>1 && fsfsf == 0){
schet=schet-1;
showHint(schet, 0);
}
}else {
document.getElementById(global_id).innerHTML=\'<img src="img/prel.gif" />\';
document.getElementById("ping"+global_id).innerHTML=\'<img src="img/prel.gif" />\';
}
}


function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}


showHint(schet, 1) //одиночная проверка
showHint(schet, 0) //проверяет весь масс самого конца
Быстрый ответ:

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