0

yahoo APIへのajax呼び出しを行うスクリプトがあります。このスクリプトは、指定されたURLを「クロール」して、データを送り返します。次に、データは「Embedly」(別の呼び出し)と呼ばれるサービスに送信されます。次に、embedlyサービスはその処理を実行し、プレーンHTMLとして表示されるデータを検知します。非常に単純なスクリプトを見てください:JsFiddle

$(document).ready(function() {

    baseUrl = "http://www.nu.nl";
    $.ajax({
        url: baseUrl,
        type: "get",
        dataType: "",
        success: function(data) {

            $foop = $('<form>' + data.responseText + '</form>');
            console.log(data.responseText);

            $.each($foop.find('h3 a[href]'), function(idx, item) {
                lnk = $(item).attr("href");
                 text = ('http://www.nu.nl');

$('<fb:like href="' + text + lnk + '"></fb:like><a href="' + text + lnk + '"></a>').appendTo('#content');
});


 $('div#content').embedly({key: 'XXXXXXXXXXXXXXXXXX',
 words: 10
 }); 

        },
        error: function(status) {
            //console.log("request error:"+url);
        }
    });


    });

私が直面している問題は、特に夕方や週末にyahoo APIを呼び出すと、呼び出しに時間がかかることがあり、データを返すのに非常に長い時間がかかることです。PHPを使用して呼び出しサーバー側を作成することにより、この問題を解決したいと思います。そのため、訪問者が私のサイトにアクセスした場合、代わりに私のサーバーからデータを受信します。もちろん、データは、たとえば1分ごとなどに何らかの方法で「更新」する必要があります。私はこれをグーグルで検索しましたが、PHPなどでのajax呼び出しを説明するものが見つからないようです。

4

2 に答える 2

3

基本的に、ajax呼び出しは単なるHTTP-GET呼び出しです。curl(推奨)またはfile_get_contents()phpを使用するだけです。

于 2012-10-31T09:30:59.843 に答える
1

サーバー側のプロキシを作成し、ファイルを作成して、このファイル内でYahooAPIProxy.php`という名前を付けるだけです。次のようにyahooAPIを呼び出します。

<?php
header('Content-Type: text/html; charset=ISO-8859-15');
function get_url_contents($url){
        $crl = curl_init();
        $timeout = 5;
        curl_setopt ($crl, CURLOPT_URL,$url);
        curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
        $ret = curl_exec($crl);
        curl_close($crl);
        return $ret;
}

    $url = “http://www.nu.nl”;
    $str = file_get_contents($url);

    echo $str;
?> 

このプロキシをクライアント側から次のように呼び出します

$(document).ready(function() {


    $.ajax({
        url: '/YahooAPIProxy.php',
        type: "get",           
        dataType: "application/x-www-form-urlencoded; charset=UTF-8",
        success: function(data) {
            $foop = $('<form>' + data.responseText + '</form>');
            console.log(data.responseText);

            $.each($foop.find('h3 a[href]'), function(idx, item) {
                lnk = $(item).attr("href");
                 text = ('http://www.nu.nl');

$('<fb:like href="' + text + lnk + '"></fb:like><a href="' + text + lnk + '"></a>').appendTo('#content');
});

同様に、EmbedlyAPIの手順を繰り返すことができます

于 2012-10-31T09:43:10.460 に答える