2013-12-09 21 views
1

我試圖使用PHP從API抓取XML。到目前爲止,我已經看過以下blog postthis previous stackoverflow後,但我沒有成功。

xml數據是通過查看網頁的源可用here

從我的理解php的json_encode返回的json數據作爲字符串前置string(length)

我希望做的是加載使用jQuery的$.ajax編碼的JSON數據用JavaScript來操縱數據。但是,從json_encode返回的數據與$.ajax不兼容。

誰會有怎樣的字符串格式,使數據可以通過AJAX讀什麼建議?

更新,我的代碼的PHP代碼是在這裏:

<?php   

    $url = file_get_contents("http://api.wefeelfine.org:8080/ShowFeelings?display=xml&returnfields=sentence&limit=50"); 

    $simpleXml = simplexml_load_string($url); 

    $json = json_encode($simpleXml); 

    var_dump($json); 

?> 

我用PHP做跨域請求,然後利用與$阿賈克斯PHP代碼的URL。當使用$ .ajax來訪問沒有php的API的URL時,我得到一個No 'Access-Control-Allow-Origin'錯誤。正如你所期望它

+0

您是否通過JSON.parse()解析了您的ajax響應文本? –

+0

如果您在將問題轉換爲json時遇到問題,那麼使用ajax解析xml也相當簡單。需要顯示你的php代碼 – charlietfl

+0

json_encode不應該預先加上'string(length)',或者不在原始對象中的任何東西。如果我猜測這只是描述json_encode操作結果的var_dump或print_r的輸出。 – stakolee

回答

0

json_encode不會在SimpleXMLElement對象上工作,至少不會。嘗試像這樣預處理XML:

$feelings = array(); 
foreach($simpleXml as $feeling) { 
    $feelings[] = array('sentence' => $feeling['sentence'] . ''); 
} 
$json = json_encode($feelings); 
+0

感謝Samy。看起來像那些作品!雖然我意識到我想要的數據包含多個標籤,因爲上面的url只有一個標籤(句子)。有沒有辦法可以返回多個標籤?例如在[此網址](http://api.wefeelfine.org:8080/ShowFeelings?display=xml&returnfields=imageid,feeling,sentence,posttime,postdate,posturl,gender,born,country,state,city,lat, LON,條件&限= 500) – clhenrick