Пост запрос аяксом ...

Discussion in 'PHP' started by Doom123, 25 Aug 2008.

  1. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Как эмитировать пост запрос посланый аяксом ....?
    Я попытался отправить теже даные на тотже файл и чтото ничё не вышло ..
    я туплю?
     
    1 person likes this.
  2. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    ajax

    var Ajax = window.XMLHttpRequest

    Добавь перед send()
    HTML:
    Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     
    1 person likes this.
  3. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Я вот так делал .. если надо еще ответ получить от сервера, то добавь
    httpRequest.onreadystatechange = function() { твой_обработчик(httpRequest); };
    перед httpRequest.open('POST', url, true);
    PHP:
    function getResult($var)
    {
        var 
    httpRequest false;
        var 
    url 'index.php'

        if (
    window.XMLHttpRequest)
        {
            
    httpRequest = new XMLHttpRequest();
            if (
    httpRequest.overrideMimeType
            {
                
    httpRequest.overrideMimeType('text/xml');
            }
        } else if (
    window.ActiveXObject)
        {
            try 
            {
                
    httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (
    e
            {
                try 
                {
                    
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (
    e) {}
            }
        }

        
    httpRequest.open('POST'urltrue);
        
    httpRequest.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
        
    httpRequest.send('varvar=' encodeURI($var));
    }
     
    #3 BlackSun, 25 Aug 2008
    Last edited: 25 Aug 2008
    1 person likes this.
  4. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    небольшой набор функций для работы с ajax
    PHP:
    // (c) nc.STRIEM

    var resultId;

    function 
    getXmlHttp()
    {
        var 
    xmlhttp;
        try 
        {
            
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (
    e
        {
            try 
            {
                
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (
    E
            {
                
    xmlhttp false;
            }
        }
        if (!
    xmlhttp && typeof XMLHttpRequest != 'undefined'
            
    xmlhttp = new XMLHttpRequest();

        return 
    xmlhttp;
    }

    function 
    sendRequest(url_resultIdmethodquery)
    {    
        
    resultId _resultId;
        var 
    httpRequest getXmlHttp();
        var 
    timeout;
        if(
    method == null)
            
    method 'GET';
        
    window.document.getElementById(resultId).innerHTML '<center><img src="img/load.gif"></center>';
        
    httpRequest.open(methodurltrue);
        
        
    httpRequest.onreadystatechange = function()
        {
            if (
    httpRequest.readyState != 4)
                return;
            
    clearTimeout(timeout);
            if (
    httpRequest.status == 200)    
                
    window.document.getElementById(resultId).innerHTML httpRequest.responseText;
            else 
                
    handleError(httpRequest.statusText);
        }
        
        if(
    query != null)
            
    httpRequest.setRequestHeader('Content-Type''application/x-www-form-urlencoded')
        
    httpRequest.send(query);


        
    timeout setTimeout( function(){ httpRequest.abort(); handleError("Time over");}, 10000);  // таймаут
        
    return false;
    }

    function 
    GetContents(urlmethodquery)
    {
        var 
    httpRequest getXmlHttp();
        var 
    timeout;
        if(
    method == null)
            
    method 'GET';
        
    httpRequest.open(methodurlfalse);
        if(
    query != null)
            
    httpRequest.setRequestHeader('Content-Type''application/x-www-form-urlencoded')
        
    httpRequest.send(query);
        if (
    httpRequest.status == 200)    
                return 
    httpRequest.responseText;
        return 
    httpRequest.status+' '+httpRequest.statusText;
    }    

    function 
    handleError(message
    {
        
    window.document.getElementById(resultId).innerHTML message;
    }

    function 
    element(id)
    {
        return 
    encodeURIComponent(window.document.getElementById(id).value);
    }
    пример использования http://taran.su/guest/
     
    3 people like this.
  5. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    я так понял что ТС нужен не аякс запрос, а эмитация его, с помощью скриптового языка?
    а какой код ответа от сервера?
     
  6. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    mr.The ответ есть ....

    Code:
    HTTP/1.1 200 OK Server: Zeus/4_3 Date: Mon, 25 Aug 2008 17:29:38 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Content-Type: text/xml; charset=ISO-8859-1 Expires: Thu, 19 Nov 1981 08:52:00 GMT Transfer-Encoding: chunked Pragma: no-cache X-Powered-By: PHP/4.3.4 63 Unknown Function 1. 0
    
    я снифером словил пост данные

    Code:
    Method=POST /ajax/event_flash.php HTTP/1.1
    
    POSTDATA=xajax=event_flash_set&xajaxr=1219678363229&xajaxargs[]=47534287&xajaxargs[]=mtcFlashCallback
    
    вот то что отсылается ... я пытался повторить ....

    PHP:
            $fp fsockopen(_HOST_PORT$errno$errstr30);
            
            
    $out .= "POST /ajax/event_flash.php HTTP/1.1 \r\n";
            
    $out .= "Host: " _HOST "\r\n";
            
    $out .= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
            
    $out .= "Content-Length: " strlen($data) . "\r\n";
            
    $out .= "Referer: " _HOST "/\r\n";
            
    $out .= "User-Agent: Opera/9.27 (Windows NT 5.1; U; ru)\r\n";
            
    $out .= $cook;
            
    $out .= "Connection: close\r\n\r\n";
            
    $out .= $data;
        
            
    fwrite($fp$out);
            
            while (!
    feof($fp)) 
                
    $answer .= fgets($fp1024);
            
            
    fclose($fp);
    снифер ещё какието пост данные словил но они были зашифрованы и всякие иероглифы место даных были. ..
     
    #6 Doom123, 25 Aug 2008
    Last edited: 25 Aug 2008
    1 person likes this.
  7. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    тьфу млин ... я идиот .. :D там параметр xajaxr задаётся какойта функцией .... и каждый раз новое значение ... еси его поменять то выйдет ошибка

    Code:
    Error: The XML response that was returned from the server is invalid
    Response: 
    а терь х знает де брать этот xajaxr
     
  8. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    парси с пред идущей страницы. разбери полностью код ajax запроса, какие данные откуда беруться ну и тд...

    для перехвата http заголовков юзай Proxomitron. работает как локальный проксик, и заголовки оч хорошо показывает. только отключи все фильтры и включи показ post данных.
     
    1 person likes this.
  9. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    mr.The я ужо забросил это дело =)

    с моими знания аякса копать 30 JS файлов ... =)) не стоит это того )))


    пля + закончились =\\