Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Ajax

Сообщения:  [1-10]    [11-20]   [21-30]  [31-33] 

 
 автор: Lelik   (24.08.2009 в 15:49)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 15:48)
 

телевизор ;)

  Ответить  
 
 автор: Евгений Петров   (24.08.2009 в 15:48)   письмо автору
 
   для: Lelik   (24.08.2009 в 15:43)
 

Я пример попросил одновременно с тем как вы заставили его работать. Ещё что то не работает?

  Ответить  
 
 автор: Lelik   (24.08.2009 в 15:43)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 15:37)
 

index.php

<?php
header
("Content-Type: text/html;charset=utf-8");
?>
<html>
    <head>
        <script type="text/javascript" src="common.js"></script>
        <script type="text/javascript" src="ajax.js"></script>
        <script>
        function Function1() {
            new _AJAX('ajax.php?req_1=1', 'get', Function1_, false);
        }
        function Function1_(oData) {
            me('block_1').innerHTML = oData.responseText;
        }
        function Function2() {
            new _AJAX('ajax.php?req_2=1', 'get', Function2_, false);
        }
        function Function2_(oData) {
            me('block_2').innerHTML = oData.responseText;
        }
        </script>
    </head>
    <body>
        <span onclick="Function1()">Вызвать функцию Function1();</span>
        <div id="block_1">0</div>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <span onclick="Function2()">Вызвать функцию Function2();</span>
        <div id="block_2">0</div>
    </body>
</html>


ajax.php

<?php
if( isset($_REQUEST['req_1']) && $_REQUEST['req_1'] != '' ) {
    for(
$i=0$i<99999999$i++) {
        
$j=0;
    }
    
    print 
'1) '.rand(1,500);
}
if( isset(
$_REQUEST['req_2']) && $_REQUEST['req_2'] != '' ) {
    for(
$i=0$i<100$i++) {
        
$j=0;
    }
    
    print 
'2) '.rand(1,500);
}
?>


ajax.js. тут есть одно "но": _MC.isIe() - надо заментить на проверку ИЕ это или нет.

/* © Ильюша Абельчаков. http://www.ilyuha.ru/ */
_AJAX = function( sUrl, sMethod, sFunction, sParams ) {
    /*
    sUrl - url на который посылается запрос
    sMethod - метод get или post
    sFunction - функция-обработчик выполняемая в слычае ответа 200 сервера
    sParams - параметры, необходимо для post запросов
    */
    /* Посылка запроса на сервер */
    sMethod = (typeof sMethod == 'undefined') ? 'GET' : sMethod;
    sFunction = (typeof sFunction == 'undefined') ? false : sFunction;
    sParams = (typeof sParams == 'undefined') ? ( ( _MC.isIe() ) ? '' : null ) : sParams;
    
    var _this = this;
    this.oLoad = XMLHttpRequest() ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    
    if (this.oLoad) {
        this.oLoad.open(sMethod, sUrl, true);
        if (sMethod.toLowerCase() == 'post') {
            this.oLoad.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            this.oLoad.setRequestHeader("Content-length", sParams.length);
            this.oLoad.setRequestHeader("Connection", "close");
        }
        this.oLoad.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        if (sFunction) {
            this.AnswerFunc = sFunction;
            this.ReqTimer = null;
            this.oReqState = function() {
                /* Получаем состояние готовности сервера выдать ответ */
                if(_this.ReqTimer != null) {
                    clearTimeout(_this.ReqTimer);
                }
                
                if(_this.oLoad.readyState == 4) {
                    if (_this.oLoad.status == 200) {
                        _this.AnswerFunc(_this.oLoad);
                    }
                    clearTimeout(_this.ReqTimer);
                    _this.ReqTimer = null;
                }
                else {
                    _this.ReqTimer = setTimeout(_this.oReqState, 10);
                }
            }
            this.oReqState();
        }
        this.oLoad.send( unescape(sParams) );
    }
    else
        return false;
}

  Ответить  
 
 автор: Евгений Петров   (24.08.2009 в 15:37)   письмо автору
 
   для: Lelik   (24.08.2009 в 15:32)
 

Дайте рабочий пример чтобы можно было запустить.

  Ответить  
 
 автор: Lelik   (24.08.2009 в 15:36)   письмо автору
 
   для: Lelik   (24.08.2009 в 15:32)
 

заработало :) исправил приведённую мной функцию в одном месте:
var _this = this;

  Ответить  
 
 автор: Lelik   (24.08.2009 в 15:32)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 13:40)
 

в общем, убрал всё глобальное, и всё равно работает не так как мне надо

_AJAX = function( sUrl, sMethod, sFunction, sParams ) {
    /*
    sUrl - url на который посылается запрос
    sMethod - метод get или post
    sFunction - функция-обработчик выполняемая в слычае ответа 200 сервера
    sParams - параметры, необходимо для post запросов
    */
    /* Посылка запроса на сервер */
    sMethod = (typeof sMethod == 'undefined') ? 'GET' : sMethod;
    sFunction = (typeof sFunction == 'undefined') ? false : sFunction;
    sParams = (typeof sParams == 'undefined') ? ( ( _MC.isIe() ) ? '' : null ) : sParams;
    
    _this = this;
    this.oLoad = XMLHttpRequest() ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    
    if (this.oLoad) {
        this.oLoad.open(sMethod, sUrl, true);
        if (sMethod.toLowerCase() == 'post') {
            this.oLoad.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            this.oLoad.setRequestHeader("Content-length", sParams.length);
            this.oLoad.setRequestHeader("Connection", "close");
        }
        this.oLoad.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        if (sFunction) {
            this.AnswerFunc = sFunction;
            this.ReqTimer = null
            this.oReqState = function() {
                /* Получаем состояние готовности сервера выдать ответ */
                if(_this.ReqTimer != null) {
                    clearTimeout(_this.ReqTimer);
                }
                
                if(_this.oLoad.readyState == 4) {
                    if (_this.oLoad.status == 200) {
                        _this.AnswerFunc(_this.oLoad);
                    }
                    clearTimeout(_this.ReqTimer);
                    _this.ReqTimer = null;
                }
                else {
                    _this.ReqTimer = setTimeout(_this.oReqState, 10);
                }
            }
            this.oReqState();
        }
        this.oLoad.send( unescape(sParams) );
    }
    else
        return false;
}


ЗЫ. посылаю запросы теперь так:

new _AJAX('ajax.php?req_1=1', 'get', Function1_, false);

  Ответить  
 
 автор: Евгений Петров   (24.08.2009 в 14:50)   письмо автору
 
   для: Lelik   (24.08.2009 в 14:45)
 

Ну вот опять. Если я говорю что человек говорит чушь то я цитирую его и привожу доводы почему он говорит чушь. Вы же в качестве доводов пишете только смайлики. Я по всей видимости ещё не настолько крут чтобы понимать вас с полуслова.
За все что я написал я могу ответить. А вы можете?

  Ответить  
 
 автор: Lelik   (24.08.2009 в 14:45)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 14:33)
 

ну потому что ты не ознакомившись подробно с вопросом вещаешь полную чушь. а потом просишь переубедить. :)

  Ответить  
 
 автор: Евгений Петров   (24.08.2009 в 14:33)   письмо автору
 
   для: Trianon   (24.08.2009 в 14:24)
 

А зачем писать мне что я говорю чушь?

  Ответить  
 
 автор: Trianon   (24.08.2009 в 14:24)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 13:42)
 

зачем?

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]  [31-33] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования