我正在使用themoviedb.org API来获取电影信息。这是我正在使用的代码:
var req = new XMLHttpRequest();
req.open("GET", "http://api.themoviedb.org/2.1/Movie.search/en/json/XXX/immortals?callback=foobar", true);
req.send();
req.onreadystatechange=function() {
if (req.readyState==4 && req.status==200) {
console.log(req.responseText);
}
}
我在控制台中收到了这个回复:
foobar([{"score":null,"popularity":3,"translated":true,"adult":false,"language":"ru","original_name":"Immortals","name":"Immortals","alternative_name":"\"War of the Gods\"","movie_type":"movie","i".......}])
如何解析此响应以获取name
属性?
更新
谢谢大家,但实际答案是hippietrail给出的。
eval(req.responseText)
答案 0 :(得分:3)
将此功能添加到您的页面:
(我看到它的数组 - 所以我会迭代每个项目...... - 如果你只想要第一个 - 所以请指明。)
function foobar(x)
{
$.each(x, function ()
{
alert(this.score);
});
}
答案 1 :(得分:3)
您正在使用的URL用于JSONP调用(请参阅:http://en.wikipedia.org/wiki/JSONP)。当不允许通过XMLHttpRequest进行跨域请求时使用JSONP。但是你已经在使用XMLHttpRequest,所以我相信你不需要JSONP调用。因此,如果从URL中删除查询字符串:
var req = new XMLHttpRequest();
req.open("GET", "http://api.themoviedb.org/2.1/Movie.search/en/json/XXX/immortals", true);
req.onreadystatechange=function() {
if (req.readyState==4 && req.status==200) {
console.log(req.responseText);
}
}
req.send();
你应该得到一个JSON字符串:
[{"score":null,"popularity":3,"translated":true,"adult":false,"language":"ru","original_name":"Immortals","name":"Immortals","alternative_name":"\"War of the Gods\"","movie_type":"movie","i".......}]
您可以使用JSON.parse
进行解析(请参阅:https://developer.mozilla.org/en/JSON):
var data = JSON.parse(req.responseText);
现在你有一个JavaScript对象,在你的情况下是一个对象数组,你可以使用:
console.log(data[0].name) // "Immortals"
但是,因为问题是tagget“jquery”,如果你正在使用那个库,你可以简化很多:
$.getJSON("http://api.themoviedb.org/2.1/Movie.search/en/json/XXX/immortals", function (data) {
console.log(data[0].name)
});
jquery还会处理浏览器差异(例如,如果浏览器不支持JSON对象)。
希望它有所帮助。
答案 2 :(得分:0)
我没有API密钥来测试它,但似乎你对jQuery和JSON都不是很熟悉。无论如何,这样的事情可能会让你开始:
$.getJSON("http://api.themoviedb.org/2.1/Movie.search/en/json/XXX/immortals?callback=?",
function(data) {
alert(data[0].name);
}
);