如何使用jsonp获取数据?

时间:2013-01-10 13:55:47

标签: javascript jquery json jsonp

我正在尝试从http://www.ikea.com/us/en/catalog/products/10176292获取一些文字 使用jsonp。

要测试它是否有效,这就是我所做的

$.getJSON("http://www.ikea.com/us/en/catalog/products/10176292?format=json&jsoncallback=?",function(data) {
$('h1').text(data.modified);
}); 

这不起作用所以它可能无效,但我在谷歌上找到的所有jsonp文档都使用twitter或flickr API作为示例。我很确定宜家没有API,所以这些方法对我没有帮助。

但是这确实有效,并从flickr

返回文本
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=25053835@N03&format=json&jsoncallback=?",function(data) {
$('h1').text(data.title);
});

我正在尝试这个,因为我看到了这个例子http://www.foxycart.com/whos-using-foxy/case-studies/modernash,它似乎与jsonp从ikea中提取文本数据一起工作。我不需要任何复杂的东西,只是为了能够检索一些简单的文本。

有人可以指出我正确的方向或给出一些提示。

由于

4 个答案:

答案 0 :(得分:0)

您可以使用ajax补充getJSON(请参阅此处的官方文档 - http://api.jquery.com/jQuery.getJSON/),然后声明JSONP非常容易。

    $.ajax({
      dataType: "jsonp",
      url: 'http://api.flickr.com/services/feeds/photos_public.gne?id=25053835@N03&format=json&jsoncallback=?',
      data: data,
      success: function( data ) {
            $('h1').text(data.modified);
       });
编辑:@Matt Ball是对的。在使用上面的ajax调用之前,您需要确保您使用的URL返回实际的json。您应该能够导航到所需的URL并查看原始JSON。然后以上所有函数都会相应地进行提取和解析。

答案 1 :(得分:0)

Ikea的链接不是JSON所以你不能从中获取。看起来Ikea没有公共API。因此,您将无法从中获取任何数据。

对于Flickr,你走在正确的轨道上。这是你如何做到的。

$.ajax({
    dataType: 'jsonp',
    url: 'http://api.flickr.com/services/feeds/photos_public.gne?id=25053835@N03&format=json&jsoncallback=?',
    success: function(data){
        console.log(data);
    } 
});

如果你想获得标题,你会做data.title等等。

答案 2 :(得分:0)

在我看来,他们只是从网站上抓取数据。所有产品信息都存储在html中,他们将这些信息添加到自己的购物车中。

由于您将图片拖到书签中,我查看了图片@ http://www.ikea.com/us/en/catalog/products/20011408/#/80193735中存储的数据:

<img id="productImg" src="/us/en/images/products/lack-side-table__0115088_PE268302_S4.JPG" border="0" alt="LACK Side table IKEA The high-gloss surfaces reflect light and give a vibrant look. Easy to assemble. Low weight; easy to move." title="LACK Side table - high gloss red, 21 5/8x21 5/8 &quot; - IKEA" width="500" height="500" class="mn_global_shadow ui-draggable" style="width: 244px; display: inline-block; height: 244px; left: 0px; top: 0px;">

在标题中我们得到名称,完成,颜色和大小 价格和数量保存在id / class中,这似乎是整个站点的标准。

除了我没有看过之外它是如何工作的,但它似乎并不太复杂。 希望这会有所帮助。

答案 3 :(得分:0)

您可能需要提供一些自定义标头。 Wireshark是你的朋友