0

我有一个脚本对 yahoo API 进行 ajax 调用,然后“抓取”给定的 URL 并发回数据。其次,数据被发送到一个名为“嵌入”的服务(这是另一个调用),嵌入服务然后做它的事情并感应回显示为纯 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);
        }
    });


    });

我面临的问题是,有时调用需要很长时间,尤其是在晚上和周末,雅虎 API 和嵌入确实需要很长时间才能返回数据。我想通过使用 PHP 进行调用服务器端来解决这个问题。因此,如果访问者访问我的网站,他会改为从我的服务器接收数据。当然,数据必须以某种方式“刷新”,例如每分钟左右。我已经对此进行了谷歌搜索,但似乎找不到任何描述使用 PHP 进行 ajax 调用的内容等等。

4

2 回答 2

3

基本上,ajax 调用只是 HTTP-GET 调用。只需使用 curl(推荐)或file_get_contents()使用 php。

于 2012-10-31T09:30:59.843 回答
1

您要做的是创建一个服务器端代理,创建一个文件并将其命名为 YahooAPIProxy.php` 在此文件中调用 yahoo API 之类的

<?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');
});

同样,您可以对 Embedly API 重复该过程

于 2012-10-31T09:43:10.460 回答