2013-12-11 126 views
2

我想使用AJAX調用來獲取一些數據並通過JSON將多個數據片段返回給調用者。它適用於某些包含簡單輸出的測試。但是,當返回的元素之一是HTML時,它不起作用。對此有何想法?PHP json_encode函數返回空白{}

// get_answer() pulls some HTML back from an XML document 
$answer = $_SESSION['quiz_session']->get_answer(); 

// test output to make sure everything is working 
echo $answer; 

/** sample output ** 
*  
     <div> 
     <p> 
      <b> 
       <span class="gloss-def">a downward slope</span> 
      </b> 
     </p> 
     <p>Because the village was situated on the 
      <i>declivity</i> of a hill, it never flooded. 
     </p> 
     <p> 
      <i>Synonyms: decline; descent; grade; slant; tilt</i> 
     </p> 
     </div> 
* 
** end sample output **/ 

echo json_encode($answer); 
// will output {} 
+3

'json_encode()'會做,如果它在輸入中遇到非UTF8字符。雖然你的例子似乎並不包含任何這樣的字符。 –

+3

在編碼爲json之前,嘗試'utf8_encode($ answer)'。 – Rudie

+0

但是,只有在獲取的數據碰巧在ISO-8859-1/latin1中編碼時,這纔會有用。最好先嚐試一下,看看究竟發生了什麼 –

回答

2

嘗試增加$答案和stdClass的或陣列,像

echo json_encode(array("answer"=>$answer)); 
+0

不幸的是,這並沒有幫助,輸出是{「answer」:{}} – user1527739

+0

那麼它一定是你上面提到的編碼問題 – vrunoa