1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

Параллельный запуск Ajax

Тема в разделе "Web 2.0, AJAX, Ruby, RSS технологии", создана пользователем -, 26 янв 2008.

  1. Гость

    господа есть такой пример.

    создадим файл ajaj.php
    Код (Text):
    <table>
    <tr>
    <td>data</td>
    <td>state</td>
    <td>status</td>
    <td>XMLHttpRequest</td>
    <tr>

    <tr>
    <td><input type="button" id="gt1" value="0"></td>
    <td><input type="button" id="gt1state" value="0"></td>
    <td><input type="button" id="gt1status" value="0"></td>
    <td><input type="button" id="gt1req" value="0"></td>
    <tr>

    <tr>
    <td><input type="button" id="gt2" value="0"></td>
    <td><input type="button" id="gt2state" value="0"></td>
    <td><input type="button" id="gt2status" value="0"></td>
    <td><input type="button" id="gt2req" value="0"></td>
    <tr>


    <tr>
    <td><input type="button" id="gt3" value="0"></td>
    <td><input type="button" id="gt3state" value="0"></td>
    <td><input type="button" id="gt3status" value="0"></td>
    <td><input type="button" id="gt3req" value="0"></td>
    <tr>


    </table>


    <script type="text/javascript">

    var reqv1 = new init();
    reqv2 = new init();
    reqv3 = new init();


    alert(window.createRequest());

    function init(){
    if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    }


    function processRequest1() {
    document.getElementById('gt1state').value=reqv1.readyState;
    document.getElementById('gt1req').value=reqv1;
    if (reqv1.readyState == 4) {
    document.getElementById('gt1status').value=reqv1.status;
    if (reqv1.status == 200) {
    document.getElementById('gt1').value=eval(reqv1.responseText)[0];
    }
    }

    }



    function processRequest2() {
    document.getElementById('gt2state').value=reqv2.readyState;
    document.getElementById('gt2req').value=reqv2;

    if (reqv2.readyState == 4) {
    document.getElementById('gt2status').value=reqv2.status;
    if (reqv2.status == 200) {
    document.getElementById('gt2').value=eval(reqv2.responseText)[0];
    }
    }

    }


    function processRequest3() {
    document.getElementById('gt3state').value=reqv3.readyState;
    document.getElementById('gt3req').value=reqv3;
    if (reqv3.readyState == 4) {
    document.getElementById('gt3status').value=reqv3.status;
    if (reqv3.status == 200) {
    document.getElementById('gt3').value=eval(reqv3.responseText)[0];
    }
    }

    }



    function ajaxRUN1(url){
    reqv1.open('POST',url,true);
    reqv1.onreadystatechange=processRequest1;
    reqv1.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    reqv1.send(null);
    }


    function ajaxRUN2(url){
    reqv2.open('POST',url,true);
    reqv2.onreadystatechange=processRequest2;
    reqv2.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    reqv2.send(null);
    }


    function ajaxRUN3(url){
    reqv3.open('POST',url,true);
    reqv3.onreadystatechange=processRequest3;
    reqv3.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    reqv3.send(null);
    }



    </script>

    <input type="button" id="gt" value="0" onclick="ajaxRUN1('ajaj1.php');">
    <input type="button" id="gt" value="0" onclick="ajaxRUN2('ajaj2.php');">
    <input type="button" id="gt" value="0" onclick="ajaxRUN3('ajaj3.php');">

    создадим файл ajaj1.php
    Код (Text):
    <?
    include('php2json.php');
    $t[0]="first ".time();
    echo php2json($t);

    for ($i=0;$i<1000000*8;$i++){
    $aa=4;
    $tt=$aa*2;
    }
    ?>
    создадим файл ajaj2.php

    Код (Text):
    <?
    include('php2json.php');
    $t[0]="first ".time();
    echo php2json($t);

    for ($i=0;$i<1000000*4;$i++){
    $aa=4;
    $tt=$aa*2;
    }
    ?>
    создадим файл ajaj3.php
    Код (Text):
    <?
    include('php2json.php');
    $t[0]="first ".time();
    echo php2json($t);
    ?>
    создадим файл php2json.php
    Код (Text):
    <?
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // disable IE caching
    header("Last-Modified: " . gmdate( "D, d M Y H:i:s") . " GMT");
    header("Content-type: text/plain; charset=windows-1251");
    header("Cache-Control: no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    function php2json($a) {
    if(is_null($a))
    return 'null';
    if($a===false)
    return 'false';
    if($a===true)
    return 'true';
    if(is_scalar($a)) {
    $a=addslashes($a);
    $a=str_replace("\n",'\n',$a);
    $a=str_replace("\r",'\r',$a);
    $a=preg_replace('{(</)(script)}i',"$1'+'$2",$a);
    return "'$a'";
    }
    $isList=true;
    for($i=0,reset($a);$i<count($a);$i++,next($a))
    if(key($a)!==$i) {
    $isList=false;
    break;
    }
    $result=array();
    if($isList) {
    foreach($a as $v)
    $result[]=php2json($v);
    return '['.join(',',$result).']';
    }
    else {
    foreach($a as $k=>$v)
    $result[]=php2json($k).':'.php2json($v);
    return '{'.join(',',$result).'}';
    }}

    ?>

    ------------------------------------------------------------------

    при запуске выводит тупо табличку.

    на событие онклик запускаем ajaj1.php по нижним кнопкам

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

    а на самом деле первый самый медленный, второй быстре а третий самый быстрый
    соответственно хотелось бы получить вывод наоборот.

    сначала самый быстрый, хоть и запущен самый медленный первее.


    или я что не понимаю .

    Я создал 3 объекта- создались
    создал 3 функции которые висят и ждут ответа от сервера
    но вот в чём вопрос, почему команда send от другой копии объекта XMLHttpRequest ждёт пока
    выполниться предыдущий объект, то есть пока не придут данные.

    помогите исправить данный скрипт.
     
  2. Гость

    Какие есть варианты по решению моего вопроса?
     
Загрузка...
Похожие Темы - Параллельный запуск Ajax
  1. IioS
    Ответов:
    1
    Просмотров:
    85
  2. Avldokuchaev
    Ответов:
    4
    Просмотров:
    110
  3. Cryfier
    Ответов:
    2
    Просмотров:
    101
  4. t0ss1
    Ответов:
    11
    Просмотров:
    265
  5. CyanFox
    Ответов:
    1
    Просмотров:
    167

Поделиться этой страницей