Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];

Вниз

вопрос знатокам JavaSccript   Найти похожие ветки 

 
aka   (2013-08-28 18:09) [0]

Использую XMLHttpRequest без сторонних библиотек. Можно ли получать динамически ответ через XMLHttpRequest сразу от двух серверных скриптов для отображения на одной странице?


 
Необычный порошок   (2013-08-28 18:11) [1]

можно,
если будет один запрос, а сервер выполнит два скрипта и вернет два результата в одном ответе

в общем один запрос-один ответ.


 
aka   (2013-08-28 18:21) [2]

>>Необычный порошок   (28.08.13 18:11) [1]

по сему получается, что нельзя.

>>если будет один запрос, а сервер выполнит два скрипта и вернет два результата в одном ответе

Запроса два, имеет две такие конструкции к двум разным  скриптам:
 
if(xmlObject.readyState == 4 || xmlObject.readyState == 0) {  
    xmlObject.open("GET", "get.php", true);  
    xmlObject.onreadystatechange = getData;
    xmlObject.send(null);
}

function getData() {  
 if (xmlObject.readyState == 4) {
   if (xmlObject.status == 200) {

      var result = xmlObject.responseText;
     
      var list = document.getElementById("pr"+PRID);
      list.innerHTML = result;        
   }
 }
}
 


 
aka   (2013-08-28 18:22) [3]

А где кнопка "цитировать" делась ?


 
Необычный порошок   (2013-08-28 18:22) [4]

Нельзя конечно, если серверная сторона не твоя.
Если твоя, то хоть сто скриптов одним запросом не проблема.


 
aka   (2013-08-28 18:30) [5]

Понятно.

Если приходит несколько ответов хоть от одного скрипта, хоть от нескольких, то результаты предыдущих ответов теряюnся, остается последний результат.

Это имеется ввиду вставка результата таким образом:
     element.innerHTML = result;


 
Необычный порошок   (2013-08-28 18:33) [6]

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

data = decode(xmlObject.responseText);
element1.innerHTML = data.result1;
element2.innerHTML = data.result2;
...
element100500.innerHTML = data.result100500;


 
Ega23 ©   (2013-08-28 21:25) [7]


> Если приходит несколько ответов хоть от одного скрипта,
> хоть от нескольких, то результаты предыдущих ответов теряюnся,
>  остается последний результат.


У тебя не может быть несколько ответов.
1. установил соединение
2. послал запрос
3. получил ответ (либо ошибку)
4. разорвал соединение (если не keep-alive, в противном случае goto 2 пока не надоест).


 
aka   (2013-08-29 12:49) [8]


data = decode(xmlObject.responseText);
element1.innerHTML = data.result1;
element2.innerHTML = data.result2;
...
element100500.innerHTML = data.result100500;


Вот именно этот код написан как полноценно работающий вариант или просто иллюстрирующий идею???

Это каким образом нужно сформировать ответ чтобы так разбивать данные, имеется ввиду это:


element1.innerHTML = data.result1;
element2.innerHTML = data.result2;


По моему это можно сделать только на клиенте парся "большой кусок текста ответа" в ручную.


 
Styx   (2013-08-29 13:05) [9]


> Это каким образом нужно сформировать ответ чтобы так разбивать
> данные

http://ru.wikipedia.org/wiki/JSON


 
Ega23 ©   (2013-08-29 13:16) [10]


> По моему это можно сделать только на клиенте парся "большой
> кусок текста ответа" в ручную.


Ну у тебя ответ в xml или json приходит. Что ты в него на серверной стороне напихал и как ты это будешь на клиенте разбирать (и будешь ли) - это твоё личное дело.


 
Необычный порошок   (2013-08-29 15:12) [11]

Это каким образом

$res = array("success"=>true);
$res["result1"] = "Однажды, в студеную зимнюю пору...";
$res["result2"] = "Мой дядя самых лучших правил...";
$res["result3"] = "Пилите гири, Шура, пилите!";
$res["result100500] = array("ну"=>"вот", "как-то"=>"так");

echo json_encode($res);


 
aka   (2013-09-05 10:03) [12]

Спасибо за ответы, все понятно.
Ну давайте вот еще один вопрос маленький остался.

<div id="id1"></div>
<script type="text/javascript">getData("id1");</script>

<div id="id2"></div>
<script type="text/javascript">getData("id2");</script>

<div id="id3"></div>
<script type="text/javascript">getData("id3");</script>


если открыть такую страницу, то она не вставит данные во все три дива, а вставит только в последний. Вопрос в том, как именно при загрузке страницы заставить отработать все три вызова последовательно.


 
Ega23 ©   (2013-09-05 10:28) [13]


<html>
<head>
<script language="javascript" type="text/javascript">
function initData() {
 getData(1);
 getData(2);
 getData(3);
}

window.onload = initData;

</script>
</head>
<body>
 .....
</body>  


Вроде так


 
aka   (2013-09-05 10:54) [14]

>> Ega23 ©   (05.09.13 10:28) [13]

Я так пробовал - эффект прежний. Вот так грузится:

function initData() {
getData(1); alert("1 - is load");
getData(2); alert("2 - is load");
getData(3);
}


а если вместо alert

function pausecomp(millis) {
 var date = new Date();
 var curDate = null;
 do { curDate = new Date(); }
 while(curDate-date < millis);
}


То все равно не работает


 
aka   (2013-09-05 10:57) [15]

Видать не ждет getData(2) пока отработает getData(1)


 
aka   (2013-09-05 11:15) [16]

Ага, вот тыком работает это

function initData() {
setTimeout("getData(1)", 100);
setTimeout("getData(2)", 200);
}


Но как оно будет работать при разной скорости соединения - не знаю


 
Ega23 ©   (2013-09-05 11:18) [17]

ТЫ какую проблему решаешь-то?


 
Styx   (2013-09-05 19:04) [18]

Переписать функцию getData таким образом, чтобы она создавала новое подключение?


 
Необычный Порошок   (2013-09-05 23:04) [19]

Видать не ждет getData(2) пока отработает getData(1)

Естественно не ждет.
И не должно ждать.
И хорошо что не ждет.


 
Обычный Порошок   (2013-09-05 23:09) [20]

если открыть такую страницу, то она не вставит данные во все три дива, а вставит только в последний. Вопрос в том, как именно при загрузке страницы заставить отработать все три вызова последовательно.

не она, а он. (то есть ты).
Запросы к серверу видим.
А где обновление дивов - только догадываемся.
И догадываемся, что в обновлении у тебя косяк.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.002 c
15-1378280205
Empleado
2013-09-04 11:36
2014.02.16
Frederik Pohl


2-1366383198
Теркин
2013-04-19 18:53
2014.02.16
Как получить список форм проекта?


15-1377248429
Шишки-Баб
2013-08-23 13:00
2014.02.16
Можно ли покупать дорогие вещи, не имея официальных доходов?


2-1366598777
mk26
2013-04-22 06:46
2014.02.16
Как переместить фаилы из одной папки в другую..


15-1377698945
aka
2013-08-28 18:09
2014.02.16
вопрос знатокам JavaSccript





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский