iT邦幫忙

0

PHP抓取JSON資料

  • 分享至 

  • xImage

http://ithelp.ithome.com.tw/upload/images/20170625/20106062s2LhuNX4aJ.png
我想抓取上方這張圖裡面的資料.雖然有上網查一些資訊.但是怎麼改不是ECHO不出資料不然就是出錯..想請問該怎麼FOREACH...

無法用回應..所以編輯..抱歉

我是想抓取http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=55ec6d6e-dc5c-4268-a725-d04cc262172b
這個網址裡面每一筆Station後面的資料....所以我都是找抓取的相關文章..跟範例

感謝你們的幫助...忘記把問題拿掉了...大致上有做出來了

1.你有理解什麼是JSON嗎?
2.如果你明白了1,那麼,不管什麼語言都有能夠轉換的方式,所以你有查一下如何轉換嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
小魚
iT邦大師 1 級 ‧ 2017-06-26 23:19:58
最佳解答
$handle = fopen("http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=55ec6d6e-dc5c-4268-a725-d04cc262172b","rb");
$content = "";
while (!feof($handle)) {
    $content .= fread($handle, 10000);
}
fclose($handle);
$content = json_decode($content,true);
echo $content['result']['count']."<br>";
foreach($content['result']['results'] as $locate)
{
    echo $locate['Station']."<br>";
}

0
timloo
iT邦研究生 2 級 ‧ 2017-10-13 16:50:18

用js 測試一下

$.ajax({
  dataType: "json",
  url: "http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=55ec6d6e-dc5c-4268-a725-d04cc262172b",
  success: function(data){
                console.log(data);
            }
});

還是出現 No 'Access-Control-Allow-Origin' 的錯誤,

寫一段php ,避掉同源問題,

<?php
header('Access-Control-Allow-Origin: *'); 
header("Content-Type: text/html; charset=utf-8");

$text = file_get_contents('http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=55ec6d6e-dc5c-4268-a725-d04cc262172b');
$tt = mb_convert_encoding($text, 'UTF-8',
          mb_detect_encoding($text, 'UTF-8, big5', true));
echo $tt;

?>

存成 getSubway.php.

讓前端js 呼叫

$.ajax({
  dataType: "json",
  url: "getSubway.php",
  success: function(data){
                console.log(data);
            }
});

得到json 資料,轉成 array 餵給datatable,來展示。

          var arrs =[];
          console.log("length:"+data.result.results.length);
          for (var i = 0; i < data.result.results.length; i++) { 
			    //alert(data.result.results[i].employeename);
			    console.log(data.result.results[i]);
			   var arr = $.map(data.result.results[i], function(el) { return el; }) 
			    arrs.push(arr);
			}
               
		  console.log(arrs);
		  
		  $('#example').DataTable( {
		        data: arrs,
		        columns: [
		            { title: "代碼" },
		            { title: "本站" },
		            { title: "目的站" },
		            { title: "更新時間" },
      			]
		    } );  
		                
            }

線上展示,可看 demo

我要發表回答

立即登入回答