2010-11-22 26 views
0

我從Web服務器返回一些JSON,但我無法引用任何密鑰。無法在返回JSON中引用密鑰

{"voteid":110.0,"message":"Your request was processed.","success":true} 

警報response.message/voteid警報undefined

alert(response.voteid); 

警報滿弦正常工作:alert(response);但這是沒有好,因爲我想單獨引用鍵。我的最終目標是從JSON獲得voteid密鑰並將其添加到一個錨,這也行不通 - 一個完整的串或只是一個鍵:

success: function(response) { $(".fav").data("voteid", response.voteid) } 
<a class="fav" data-voteid=""> 

在一個側面說明,我不不知道爲什麼在投票結束時有0。我將該數字作爲字符串返回!

編輯:通過將dataType設置爲JSON修復,但是,數據不會附加到錨點的data-voteid屬性。

編輯得到它通過使用.attr而不是.data追加ID - 很多謝謝大家!

+0

就這麼說,有浮點字段叫做「id」感覺不對。 – cHao 2010-11-22 19:01:26

+0

cHao,我不知道爲什麼會發生這種情況。我正在返回一個字符串。我不知道這是從哪裏來的! – Mohamad 2010-11-22 19:02:36

+0

@cHao:JavaScript沒有整數。 JSON也沒有。雖然`110.0`似乎是一個奇怪的選擇。 :) – 2010-11-22 19:03:40

回答

2

你已經排除了你的代碼的一些關鍵部分,但我猜你沒有爲你的請求設置dataType:'json'

或者你也可以手動調用$.parseJSON

success: function(response) { 
    var parsed = $.parseJSON(response); 
    $("fav").data("voteid", parsed.voteid); 
} 

記住,JSON 文本。

1

當您想將它作爲對象返回時,您可能會將您的JSON作爲字符串取回。請嘗試以下操作:

var responseObject = eval(response);

警報(responseObject.voteId)

,然後谷歌爲什麼EVAL是不是一個好主意,如何解決這一點。

1

您是否在您的ajax調用中將數據類型指定爲json?它可能會返回JSON作爲一個字符串,這將不允許您訪問密鑰。如果你指定JSON jquery會將字符串轉換爲對象