有没有人知道如何使用$ .getJSON从数组“文章”中访问“name”,“url”,“headline”,“timestamp”和“excerpt”?
答案 0 :(得分:1)
似乎daylife.com没有提供“jsonp”作为返回类型。这意味着脚本标记正文中的javascript对象将导致浏览器出错。因此,就我所知,你将无法获得该脚本标签中的数据。
如果他们确实支持jsonp,他们会查看该回调网址并返回如下内容:
<script src="your API call here">
callbackFunction({response:"ok", data:[1,2,3]}) //this passes the data to callbackFunction
</script>
而不是他们返回这个:
<script src="your API call here">
{response:"ok", data:[1,2,3]} //this is a parse error for the browser
</script>
解决方法是通过服务器将呼叫代理到其服务器。下面是C#如何完成的样本。 ProxyHandler方法仅用于说明如何从某些Web框架中使用ProxyJsonpRequest。它没有特定的一个。我们的想法是javascript客户端将传递一个参数,该参数指定服务器应该向其请求数据的远程URL。服务器发出该请求并将该数据返回给客户端。以下代码也仅适用于GET请求。
public string ProxyJsonpRequest(string remoteServer)
{
HttpWebRequest req = HttpWebRequest.Create(remoteServer) as HttpWebRequest;
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
return new StreamReader(resp.GetResponseStream()).ReadToEnd();
}
public void ProxyHandler()
{
string remote = this.Request.Params["url"];
return new Response(data:ProxyJsonpRequest(remote), ContentType:"text/javascript");
}
答案 1 :(得分:0)
嗯,JSON文本只包含一个大的'javascript对象 - 这就是为什么它被称为“JavaScript Object Notation”,所以你可以获得任何带有它的限定名称的属性(比如object.property)。阅读JSON响应,我们假设您想要获取“article”数组中每个对象的“name”,“url”,“headline”,“timestamp”和“excerpt”:
$.getJSON("http://freeapi.daylife.com/jsonrest/publicapi/4.8/topic_getRelatedArticles?topic_id=&name=business&start_time=2010-06-26&end_time=2010-07-03&sort=date&offset=&limit=10&source_filter_id=&include_scores=&include_image=&include_redundant=&accesskey=b030265d4c2b33652b6d519a10d0a6f0&signature=c683ddf5dee41d321b673fb1413f1f5c&callback=?", function(data){
$.each(data.response.payload.article, function(index, value){
alert("The name: "+ value.source.name);
alert("The url: "+ value.source.url);
alert("The headline: "+ value.headline);
alert("The timestamp: "+ value.timestamp);
alert("The excerpt: "+ value.excerpt);
});
});
请注意查询字符串中的回调参数,如果您在日常生活中使用来自任何域的此代码,则必须 .com,因为大多数浏览器强制实施的相同原始策略都不允许你这样做一个调用,因为将javascript代码从一个页面注入另一个页面是一件可怕且危险的事情,所以你使用回调参数告诉浏览器“放松男人,我知道我在做什么“
希望它有所帮助!