Blog webdeveloperski Patryk yarpo Jar

Ajax z proxy na cURL

Autor wiadomości Maj 7, 2011

Ajax oparty o obiekt `XMLHttpRequest' nie pozwala na odczytywanie danych ze zdalnego serwera (choć można to ominąć). Istnieje jednak możliwość stworzenia odpowiedniego skryptu PHP, przekierowującego nasz request, odbierającego dane ze zdalnego serwera i przekazanie go skryptowi JavaScript.

Prosty kod

<html>
<head>
    <title>Przykład Ajax - zdalny serwer 1</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <script type="text/javascript">
    function testAjax()
    {
        var oClient = new XMLHttpRequest();
        oClient.open('POST', 'ajaxproxy.php');
        oClient.onreadystatechange = function()
        {
            if (4 === this.readyState &amp;&amp; 200 === this.status)
            {
                document.getElementById('response').innerHTML = this.responseText;
            }
        }
        oClient.send(null);
    }
    </script>
</head>
<body>
    <button onclick="testAjax()">test</button>
    <div id="response"></div>
</body></html>

W pliku 'ajaxproxy.php' może wykorzystać funkcję `file_get_content' jednak wtedy wymagane byłoby, aby opcja 'allow_url_fopen' była ustawiona na 'On' w ustawieniach serwera PHP.

cURL

Innym rozwiązaniem, jest wykorzystanie cURL. Plik 'ajaxproxy.php' zawiera taki skrypt:

<?php
$url = 'http://yarpo.pl/download/examples/jsonp_callback.php?a=10&b=dane';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);

$response = curl_exec($curl);
curl_close($curl);
echo $response;

Warto przeczytać:

Komentarze (0) Trackbacks (0)

Brak komentarzy.


Leave a comment

 

Brak trackbacków.