2011-10-31 74 views
0

內部功能我想以下幾點:jQuery的parseJSON和JSON字符串

var objJson = jQuery.parseJSON('"myFunc": function(){ ... }'); 

這種失敗。現在我的問題是:爲什麼它會失敗,我怎麼能實現我想要的?

預先感謝您!

+0

將這項工作使用eval?這是一個封閉的系統,所以安全性並不是真正的問題。編輯:把這個答案,我會檢查它;-) –

+2

我認爲我們需要定義*什麼*你試圖實現之前,我們可以提供一個解決方案。傳遞給'parseJSON'方法的字符串內容格式不正確,另外JSON不傳遞函數定義,即使它被解析,它也會導致一個空對象。你的目標是什麼*? –

+2

相關:http://stackoverflow.com/questions/2001449/is-it-valid-to-define-functions-in-json-results –

回答

0

OK,下面的工作對我來說(應該用Google搜索的時間長一點):

var o = eval('(' + '"myFunc": function(){ ... }' + ')') 
+0

這可能永遠不會奏效。字符串中的圓括號應該是大括號:'eval('{'+'「myFunc」:function(){...}'+'}')'相當於'var o = {myFunc:function ){...}}'.' –

1

你似乎有一個關於JSON是什麼誤解。 JSON是一種簡單的數據格式,其語法類似於JavaScript對象。這很簡單,spec適合一個頁面。如果你有它的功能,它不是JSON。因此使用JSON工具沒有意義。

現在,注入外部JavaScript代碼到HTML文檔的常用方法是<script> tag

​​
+0

+1因爲我同意你的看法。描述JSON格式的[RFC 4627](http://www.ietf.org/rfc/rfc4627)也沒有包含任何關於函數的內容。關於維基百科中的JSON的文章有特殊的段落[不支持的本地數據類型](http://en.wikipedia.org/wiki/JSON#Unsupported_native_data_types),其中可以找到函數。 – Oleg