2012-03-17 111 views
0

什麼是$ .toJSON()函數的用法。它似乎將以json格式轉換數據。 這裏是代碼片段

data: $.toJSON({ name: $("input[type=text]").val() }) 

不使用$ .toJSON()函數我們可以josn格式手動提供數據,如

data: { name: $("input[type=text]").val() } 

它也將工作,我認爲。請討論。謝謝

+0

僅供參考,jquery-json插件的文檔位於:http://code.google.com/p/jquery-json/ – 2012-03-17 18:28:54

回答

2

首先,toJSONis not a native jQuery method

假設它一樣JSON.stringify,它是不一樣分配對象到data選項。從documentation(強調我的):

要發送到服務器的數據。 它被轉換爲查詢字符串,如果還不是字符串的話。它附加到GET請求的URL。

所以如果不傳遞一個字符串(即,對象)時,數據被轉換爲查詢字符串,不JSON。

爲了更準確

data: $.toJSON({ name: $("input[type=text]").val() }) 

會導致這個URL(假設GET(%22")):

http://some_server.com/?{%22name%22:%22somevalue%22} 

這將使價值難以進入,我想。在POST請求中使用這個更有意義。

在另一方面,

data: { name: $("input[type=text]").val() } 

結果

http://some_server.com/?name=somevalue 

也許重要的是要指出的是,在你的榜樣

{ name: $("input[type=text]").val() } 

不是「JSON格式」。它是一個JavaScript對象文字。 JSON是一種數據交換格式,雖然其語法與JavaScript的對象文字相似,但它完全不同。

2

JSON-formatJSON-object是兩個不同的東西!

toJSON(一個插件的方法)執行以下操作:

的toJSON:序列化javascript對象,數字,字符串,或者數組JSON。


  1. data: $.toJSON({ name: $("input[type=text]").val() })會給你JSON字符串

  2. data: { name: $("input[type=text]").val() }會給你JavaScript對象

+0

這是針對'$ .getJSON'函數,而不是'$。 toJSON'功能。 – 2012-03-17 18:28:05

+1

@EvanMulawski。哎呀,編輯。 – gdoron 2012-03-17 18:31:26

+1

仍然不是一個有效的答案。 – 2012-03-17 18:32:27