2017-03-04 71 views
0

從PHP函數JSON數據我想將數據從一個PHP函數來發送使用AJAX我的HTML網頁,我的功能看起來像:獲取使用AJAX

 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數據呢?如果你想看到所有的JSON的

+0

你確定你定義後調用'getFeed'? – hassan

+0

無需編碼每個項目。只是'json_encode($ articles)' –

+0

@HassanAhmed我不叫它,我應該怎麼做我的JavaScript腳本 –

回答

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; 
} 
+0

謝謝。我想知道如何調用該函數以及在哪裏? –

+0

非常感謝,如果可以的話,這真的很有用,只需向我解釋發生了什麼 –

0

Your javascript function should be as below

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

你方法的數據[getFeed],你可以返回值而不是回顯它。

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

希望這有助於你

+0

謝謝。我收到以下錯誤: 未捕獲的SyntaxError:JSON輸入的意外結束 在JSON。解析()在Function.n.parseJSON(jquery.min.js:4) 在Object.success(test.php的:33) 在I(jquery.min.js:2) 在Object.fireWith [ (jquery.min.js:2) at y(jquery.min.js:4) at XMLHttpRequest.c(jquery.min.js:4) –

+0

您是否嘗試先控制{data}?並確保你已經使用「return json_encode($ articles)」返回所有數據;「來自PHP。 – eeya