返回JSON时无法引用键

时间:2010-11-22 18:56:51

标签: jquery

我从Web服务器返回一些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 - 非常感谢大家!

3 个答案:

答案 0 :(得分:2)

您已排除代码的某些关键部分,但我猜您没有为您的请求设置dataType:'json'

或者您可以手动拨打$.parseJSON

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

请记住,JSON 文本。

答案 1 :(得分:1)

当您希望将JSON作为对象返回时,您可能会将JSON作为字符串返回。请尝试以下方法:

  

var responseObject = eval(response);

     

警报(responseObject.voteId)

然后谷歌为什么eval不是一个好主意以及如何解决这个问题。

答案 2 :(得分:1)

您是否在ajax调用中将数据类型指定为json?它可能会将JSON作为字符串返回,这将不允许您访问密钥。如果指定JSON,jquery会将字符串转换为对象