1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

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

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

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

  1. Гость

    Репутация:
    0
    господа есть такой пример.

    создадим файл ajaj.php
    Код:
    <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
    Код:
    <?
    include('php2json.php');
    $t[0]="first ".time();
    echo php2json($t);
    
    for ($i=0;$i<1000000*8;$i++){
    $aa=4;
    $tt=$aa*2;
    }
    ?>
    создадим файл ajaj2.php

    Код:
    <?
    include('php2json.php');
    $t[0]="first ".time();
    echo php2json($t);
    
    for ($i=0;$i<1000000*4;$i++){
    $aa=4;
    $tt=$aa*2;
    }
    ?>
    создадим файл ajaj3.php
    Код:
    <?
    include('php2json.php');
    $t[0]="first ".time();
    echo php2json($t);
    ?>
    создадим файл php2json.php
    Код:
    <?
    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. Гость

    Репутация:
    0
    Какие есть варианты по решению моего вопроса?
     
Загрузка...

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