使用AJAX从PHP函数获取JSON数据

时间:2017-03-04 12:46:17

标签: javascript php jquery ajax

我想使用AJAX将来自php函数的数据发送到我的HTML页面,我的函数看起来像:

     function getFeed() {
        $url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
        $content = file_get_contents($url);
        $data = simplexml_load_string($content);
        $articles= array();

        foreach( $data->channel->item as $item){

            $articles[]=array(
                'title'         =>  (string)$item->title,
                'description'   =>  (string)$item->description,
                'link'          =>  (string)$item->link,
                'Date'          =>  (string)$item->pubDate,
            );
        }

        foreach($articles as $article){
        echo json_encode($article['title']);
        }
    }

我的javascript脚本看起来像:

$(function(){
    $.ajax({
        type:'GET',
        url: '/rss/core/inc/rssnews.inc.php',
        success: function (data){
        console.log('success',data);
        }
    });
});

执行代码后,我在控制台中收到了一条' success'消息,但没有收到数据。 那么,在这种情况下如何获取JSON数据呢?

3 个答案:

答案 0 :(得分:2)

像这样改变剧本

$(function(){
    $.ajax({
        type:'GET',
        url: '/rss/core/inc/rssnews.inc.php?function=getFeed',
        success: function (data){
        console.log('success',data);
        }
    });
});

在你的" rssnews.inc.php"文件写这段代码

if(isset($_GET['function']) && $_GET['function'] !=''){
    $result = $_GET['function']();
    echo json_encode($result);
}
function getFeed() {
    $url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
    $content = file_get_contents($url);
    $data = simplexml_load_string($content);
    $articles= array();

    foreach( $data->channel->item as $item){

        $articles[]=array(
            'title'         =>  (string)$item->title,
            'description'   =>  (string)$item->description,
            'link'          =>  (string)$item->link,
            'Date'          =>  (string)$item->pubDate,
        );
    }

    $articalesArr = array();
    foreach($articles as $article){
        array_push($articalesArr, $article['title']);    
    }
    return $articalesArr;
}

答案 1 :(得分:1)

如果要查看方法[getFeed]中的所有JSON数据,可以返回值而不是回显它。

 function getFeed() {
    $url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int#';
    $content = file_get_contents($url);
    $data = simplexml_load_string($content);
    $articles= array();

    foreach($data->channel->item as $item) {

        $articles[]=array(
            'title'         =>  (string)$item->title,
            'description'   =>  (string)$item->description,
            'link'          =>  (string)$item->link,
            'Date'          =>  (string)$item->pubDate,
        );
    }

    return json_encode($articles);
}

然后在你的JS中,你可以使用$ .parseJSON来查看结果。

$.ajax({
    type:'GET',
    url: '/rss/core/inc/rssnews.inc.php',
    success: function (data) {
        var oJsonResponse = $.parseJSON(data);
        console.log(oJsonResponse);
    }
});

你会得到这样的结果:

enter image description here

希望这会对你有所帮助

答案 2 :(得分:0)

  

您的javascript函数应如下所示

$(function(){
    $.ajax({
        type:'GET',
        url: '/rss/core/inc/rssnews.inc.php',
        success: function (data){
            for(var i=0;i<data.length;i++){
                console.log(data[i].title);
             }
        }
    });
});