2013-10-27 15 views
1

我剛開始使用JSON來繞開頁面之間的信息,而我根本找不到這個信息。在JSON中使用和檢索PHP變量

基本上,我有一個頁面使用jquery getJSON從另一個頁面獲取一些JSON數據。但是PHP變量將不會被替換爲必要的內容。

這裏的jQuery腳本(這是工作的罰款,我相信)

$.getJSON("./menu-controller.php", { editId: getEditId, getEditInfo: true },function(data) { 
    console.log(data); 
    var id = data.itemId; 
    alert(id); 
}); 

我能得到它的另一頁上使用此代碼時,工作得很好

$json = '{ "itemId":"4" }'; 
echo $json; 

但是,如果我使用這個,那麼它不會工作

$menuId = 4; 
$json = '{ "itemId":$menuId }'; 
echo $json; 

所以我的問題是,我怎樣才能得到$ menuId實際取代本身與數字,並正確地回到其他頁面?

我試着搞亂了報價,並重新安排了4個小時的報價。它要麼出現錯誤,要麼不會用實際的數字替換$ menuId。

回答

1

僅供參考,PHP變量只能用雙引號內插,而不能用單引號引起來。所以,你做這樣的事情:

$json = "{ \"itemId\":$menuId }"; 
    echo $json; 

請參閱演示在這裏:http://codepad.viper-7.com/CDC0oM

+0

謝謝你的擡頭!非常感謝您的幫助。 –

+1

你應該**不**手動建立JSON字符串。 – Mark

+0

@RainFromHeaven:同意,但這個答案是相對於問題中提出的問題。我確信他應該知道PHP變量只能用雙引號字符串插入,之後。 – Sanjay

4

您應該製作一個PHP數組,然後將其轉換爲JSON。

例如:

$array = array(); 
$array['itemId'] = $menuId; 
echo json_encode($array); 

注:還有一個json_decode函數,它在一個JSON字符串,並將其轉換成PHP也是如此。你可能會覺得很有用。

+0

謝謝你的例子!我得到它的工作=) –

+1

這應該是公認的答案,因爲它建議使用'json_encode'來建立JSON字符串。 – Mark

0

的問題是,你已經中單一封閉的PHP變量(而不是雙)報價,所以PHP沒有在字符串中尋找要替換的變量。

所以這應該工作:

$json = "{ \"itemId\": $menuId}"; 

除了由Cezary Wojcik提出的json_encode方法(這將是很多更靈活,如果數據變得更加複雜!)。

+0

謝謝,我真的很感謝幫助和例子!我得到了它的工作。 –

+0

您應該**不**手動構建JSON字符串。 – Mark

+0

@RainFromHeaven這就是爲什麼我建議Cezary Wojcik的答案是正確的,同時仍然指出問題中的代碼出了什麼問題。 – danielpsc

1

在此示例:

$menuId = 4; 
$json = '{ "itemId":$menuId }'; 
echo $json; 

你包裹在單引號的JSON字符串。 PHP替代值雙引號,所以價值不在這裏取代,您呼應淡水河谷

{ "itemId":$menuid } - this is not valid JSON. 

你最好創建一個PHP數組,並使用json_encode()創建SON字符串:

echo json_encode(array("itemId"=>$menuId));