Ajax z proxy na cURL

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]<?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;[/php]

Warto przeczytać:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *