我正在使用返回以下内容的图书API
var _OLBookInfo = {
"ISBN:234234234234234": {
"bib_key": "ISBN:234234234234234",
"preview": "noview",
"preview_url": "http://openlibrary.org/b/adsfasdfa",
"info_url": "http://openlibrary.org/b/adsfasdf",
"details": {
"publishers": [
"W. H. sdafasdfasdf"
]
}
};
如何使用$.get()
具体而言,如何轻松访问详细信息 - >出版商
更新
$.post("/Home/LookupBook", { query: lookuptxt.val() },
function (data) {
alert(data); //returns proper json data
alert(data.details.publishers[0]); // get erro saying details.publishers[0] is null
},
"json");
答案 0 :(得分:2)
您不必在JS中解析JSON字符串。只需查看jQuery的$ .getJSON()方法。
http://docs.jquery.com/Ajax/jQuery.getJSON
示例:
$.getJSON( url, data, function(response){
alert(response['ISBN:234234234234234'].details.publishers[0]);
} );
我刚看到你的调用不只返回JSON,而是返回JS文件。
您可以做的是eval()
从$.get()
$.get( url, data, funcCallback);
function funcCallback(data, status){
eval(data);
alert(_OLBookInfo['ISBN:234234234234234'].details.publisher[0]);
}
顺便说一句,您的JSON字符串无效。它后面有一个缺少花括号。
您也可以尝试$ .getScript():
答案 1 :(得分:1)
嗯,JSON不需要在JavaScript中解析。这有点从服务器返回该格式的数据。
答案 2 :(得分:1)
不要将JSON与JavaScript混淆。您在该示例中提供的是JavaScript语句,特别是赋值语句。 _OLBookInfo的值是大数据哈希值。
简短回答:要使您的示例有效JSON,请删除var _OLBookInfo =
部分(以及尾随分号)。 JSON本身就是对象文字或数组文字。这是 表达式 ,而非 声明 。
所以问题不在于您的JavaScript或jQuery,而在于API。无论你使用哪种API,如果他们说它返回 JSON ,就会误导你。如果它是您自己的API,您可以轻松地将其修复为有效的JSON。
答案 3 :(得分:0)