我在php中有對象,每個對象表示一個「item」以及與它相關的所有信息。將PHP對象傳遞給javascript
而當用戶瀏覽頁面時,應將這些對象傳遞給javascript。理想情況下,鏡像相同的結構,所以我可以使用Raphael在我的網站上以單獨的形狀顯示每個項目及其信息。
但是,你如何獲得從PHP到JavaScript的對象?
我在php中有對象,每個對象表示一個「item」以及與它相關的所有信息。將PHP對象傳遞給javascript
而當用戶瀏覽頁面時,應將這些對象傳遞給javascript。理想情況下,鏡像相同的結構,所以我可以使用Raphael在我的網站上以單獨的形狀顯示每個項目及其信息。
但是,你如何獲得從PHP到JavaScript的對象?
您可以將PHP對象轉換爲數組,然後使用JSON函數對其進行編碼。之後,從JavaScript解碼。下面是一些基本步驟:
Convert PHP的對象陣列。使用json_encode()
編碼該PHP數組。使用JSON.parse
或者您可以使用jQuery.parseJSON
做
Pass JSON編碼的數據PHP
解碼JSON在JavaScript中。
這是一篇有關傳遞JavaScript object to a PHP object的有趣教程。您可能會通過觀看其他特色/相關視頻發現它很有用。
希望這會有所幫助。
您將使用JSON對PHP對象進行編碼,以便可以通過Javascript訪問它們。具體怎麼做取決於你的應用程序。
爲此,PHP具有json_encode和json_decode函數。
我用這個:
<script>
var js_data = '<?php echo json_encode($php_data); ?>';
var js_obj_data = JSON.parse(js_data);
</script>
$ php_data可自從簡單數組對象的數組。
遲到的答案,但我很驚訝沒有人提到什麼,可以說是部署此功能的「正確」方式。
在您的對象上實現JsonSerializable接口。該接口定義了一個抽象方法,jsonSerialize
。該方法應該返回對象的數組表示形式。
當您嘗試在對象上使用json_encode
時,將調用jsonSerialize
。您可以將此接口視爲特定於本機JSON編碼功能的「神奇方法」,相當於字符串的__toString
。
把它在行動,你有一個對象,看起來像這樣:
class MyFoo implements JsonSerializable {
public $bar = 'hello';
public $baz = 'world';
public function jsonSerialize() {
return array(
'bar'=>$this->bar,
'baz'=>$this->baz
);
}
}
$myFooInstance= new MyFoo();
echo json_encode($myFooInstance); // {"bar":"hello","baz":"world"}
當我在我的項目實施這一時候,我經常在對象toArray
方法,它產生的陣列,並我已經jsonSerialize
使用它:
public function jsonSerialize() { return $this->toArray(); }
......這樣我也可以使用數組形式的,如果我選擇這樣做。這也是方便的,如果你將實現對象的序列化與__sleep
文檔
JsonSerializable
- http://www.php.net/manual/en/class.jsonserializable.phpjson_encode
- http://www.php.net/manual/en/function.json-encode.php可能是最好的方式去做。 – designcise 2014-07-02 00:28:13
'的eval()'是邪惡的。除非你無法提供幫助,否則不要使用它,特別是不要將它用於不可信的數據! – Bobby 2013-06-12 09:56:43
事實上,eval()是一個危險的方法來調用,而且,如果對象很大,處理起來可能會很慢。如果你忽略它的存在會更好,因爲在大多數情況下,如果你需要將它用於真正的目的,那是因爲你有一個架構問題。 – RPDeshaies 2014-02-21 13:43:57
最佳答案!像魅力一樣工作 – 2017-05-27 17:11:01