我从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 - 非常感谢大家!
答案 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会将字符串转换为对象