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

Javascript 使用AJAX从PHP函数获取JSON数据,javascript,php,jquery,ajax,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= arr

我想使用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数据呢

像这样更改脚本

$(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;
}

像这样修改脚本

$(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;
}
您的javascript函数应该如下所示

$(函数(){
$.ajax({
类型:'GET',
url:“/rss/core/inc/rssnews.inc.php”,
成功:功能(数据){
对于(var i=0;i
您的javascript函数应该如下所示

$(函数(){
$.ajax({
类型:'GET',
url:“/rss/core/inc/rssnews.inc.php”,
成功:功能(数据){

对于(var i=0;i如果您想查看方法[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);
    }
});
您将得到如下结果:


希望这对您有所帮助

如果您想查看方法[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);
    }
});
您将得到如下结果:


希望这对您有所帮助

您确定在定义之后要调用
getFeed
吗?不需要对每个项目进行编码。只需
json_encode($articles)
@HassanAhmed我不叫它,如果您调用“/rss/core/inc/rssnews.inc.php”,我该如何在我的javascript脚本中做在你的浏览器中,你能得到想要的结果吗?你不能,你必须从你的服务器端调用它,换句话说,从你的php文件中调用它。你确定你在定义它之后调用了
getFeed
?没有必要对每一项进行编码。只要
json\u encode($articles)
@HassanAhmed我不叫它,如果你叫它“/rss/core/inc/rssnews.inc.php”,我该如何在我的javascript脚本中做呢在你的浏览器中,你能得到想要的结果吗?你不能,你必须从你的服务器端调用它,换言之,从你的php文件中调用。谢谢。我想知道如何调用函数以及在哪里?非常感谢,这真的很有效,如果可以的话,请告诉我发生了什么谢谢。我想知道如何调用函数在哪里呢?非常感谢这是真正的工作,如果可以的话,请向我解释一下发生了什么谢谢。我得到以下错误:未捕获的语法错误:JSON.parse()处的JSON输入意外结束,Function.n.parseJSON(jquery.min.js:4)处的Object.success(test.php:33)处的I(jquery.min.js:2)处的Object.firwith[resolveWith](jquery.min.js:2)在y(jquery.min.js:4)在XMLHttpRequest.c(jquery.min.js:4)你有没有尝试先控制台{data}?并确保你已经使用PHP中的“return json_encode($articles);”返回了所有数据。谢谢。我得到以下错误:Uncaught SyntaxError:json.parse()的json输入意外结束在Function.n.parseJSON(jquery.min.js:4)在Object.success(test.php:33)在i(jquery.min.js:2)在Object.fireWith[as resolved with](jquery.min.js:2)在y(jquery.min.js:4)在XMLHttpRequest.c(jquery.min.js:4)在y(jquery.min.js.js:4)你有没有尝试先控制台{data}并确保你已经使用“return json\u encode”返回了所有的数据($articles);“来自PHP。