使用jquery解析daylife json时遇到问题

使用jquery解析daylife json时遇到问题,jquery,json,api,parsing,Jquery,Json,Api,Parsing,有人知道我如何使用$.getJSON访问数组“article”中的“name”、“url”、“headline”、“timestamp”和“摘录”吗 好吧,JSON文本只包含一个大的ol'javascript对象——这就是为什么它被称为“javascript对象表示法”,所以你可以用它的限定名获取任何属性(比如object.property)。在阅读JSON响应时,假设您想要获取“article”数组中每个对象的“name”、“url”、“headline”、“timestamp”和“extra

有人知道我如何使用$.getJSON访问数组“article”中的“name”、“url”、“headline”、“timestamp”和“摘录”吗


好吧,JSON文本只包含一个大的ol'javascript对象——这就是为什么它被称为“javascript对象表示法”,所以你可以用它的限定名获取任何属性(比如object.property)。在阅读JSON响应时,假设您想要获取“article”数组中每个对象的“name”、“url”、“headline”、“timestamp”和“extract”:

请注意查询字符串中的回调参数,如果您要从daylife.com以外的任何域使用此代码,这是必须的,因为大多数浏览器强制执行的同源策略不允许您执行这样的调用,因为从一个页面向另一个页面注入javascript代码是一件可怕而危险的事情,因此,您使用回调参数告诉浏览器“放松点,我知道我在这里做什么”


希望有帮助

daylife.com似乎没有提供“jsonp”作为返回类型。这意味着脚本标记主体中的javascript对象将导致浏览器中出现错误。正因为如此,据我所知,您将无法获取该脚本标记中的数据

如果他们确实支持jsonp,他们会查看回调url并返回如下内容:

<script src="your API call here">
callbackFunction({response:"ok", data:[1,2,3]}) //this passes the data to callbackFunction
</script>

嗨,lfborjas,我很感谢代码和帮助,但由于某些原因,它不起作用。您是否尝试实现此代码并使其正常工作?您好!遗憾的是,没有,我当时很匆忙而且过于自信——因为我经常做这件事——我会亲自试一试,让你知道Evan在上面说的是真的:这些家伙不支持带填充的JSON(JSONP是一种非官方技术),所以我猜他们不希望人们从javascript调用他们的API。是否有可能实现此服务器端(如python、ruby或java)而不是客户端?出于好奇,它为什么/如何在浏览器中返回错误?浏览器返回的错误类型是解析错误。下面是每个现代浏览器的列表:IE8:预期为“;”,FF3.5.9:无效标签,Chrome5:意外标记':'谢谢Evan,我想可能就是这样。你知道我如何在C#中实现这一点吗?顺便问一下,如果JSON不能在JS中实现,为什么他们会返回JSON?如果你知道如何用java而不是C来实现,我也能解释它;为了完整起见,您是否介意向我展示javascript客户端可能传递的内容以及如何将其传递给代理?
<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>
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");
}