Javascript 如何使用jsonp获取数据?

Javascript 如何使用jsonp获取数据?,javascript,jquery,json,jsonp,Javascript,Jquery,Json,Jsonp,我正试着从你的电脑上取些文字 使用jsonp 为了测试它是否有效,我就是这么做的 $.getJSON("http://www.ikea.com/us/en/catalog/products/10176292?format=json&jsoncallback=?",function(data) { $('h1').text(data.modified); }); 这不起作用,所以可能是无效的,但我在google上找到的所有jsonp文档都使用twitter或flickr API作为示例

我正试着从你的电脑上取些文字 使用jsonp

为了测试它是否有效,我就是这么做的

$.getJSON("http://www.ikea.com/us/en/catalog/products/10176292?format=json&jsoncallback=?",function(data) {
$('h1').text(data.modified);
}); 
这不起作用,所以可能是无效的,但我在google上找到的所有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);
});
我之所以尝试这样做,是因为我看到了这个示例,它似乎与从宜家获取文本数据的jsonp一起工作。我不需要任何复杂的东西,只需要能够检索一些简单的文本

有人能给我指一下正确的方向或给我一些提示吗


谢谢

您可以用ajax补充您的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);
       });

编辑:@mattball是对的。在使用上面的ajax调用之前,需要确保所使用的URL返回的是实际的json。您应该能够导航到所需的URL并查看原始JSON。然后,上述所有函数将执行相应的获取和解析

宜家的链接不是JSON,因此您无法从中提取。看起来宜家没有公共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等等。

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

自从您将图像拖到书签后,我查看了存储在图像@中的数据:


在标题中,我们可以看到名称、饰面、颜色和尺寸。
价格和数量以id/类别保存,这似乎是整个网站的标准

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

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

,更不用说JSONP了。您不能只是神奇地附加一些查询参数,然后期望返回JSON(P);服务器必须真正支持它。我试过了,URL本身会给出一个永久移动的
301
,并重定向到HTML页面。它也不会发送任何消息,所以你会点击。我有点猜测它不会像那样工作,但我很好奇,你们认为这个开发人员是如何做到的?我尝试这样做是因为我看到了他的例子,在他的书签购物车中,他能够使用宜家的JSONP提取数据,并实际使用它,我发现。无论如何,我看不到任何对宜家的要求。看起来服务器端发生了一些事情(可能是curl、parse、returnJSON),然后数据被正常提取。我知道宜家没有API,但我很好奇这位开发人员是如何做到的?通过他的书签车,他能够从宜家网站上提取数据并将其发送到购物车上。这不是违反了同一原产地政策吗?我知道宜家没有API,但我很好奇这个开发者是怎么做到的?foxycart.com/whos-using-foxy/case-studies/modernash通过他的书签车,他能够从宜家网站上提取数据并发送到购物车上。这不是针对同一来源政策吗?所以在查看示例网站后,他们特别说“API.JSONP cart interaction.User syncing.Webhooks”。由于宜家似乎没有API,而且您的URL也不是真正的JSON,看起来FoxyCart的员工没有使用JSON,可能正在使用自定义的webhook/脚本。所以我想回答你们的问题,若并没有JSON可以获取,你们就不能获取JSON。这个家伙()编写了一个gem来从宜家获取东西,但它比一些简单的jQuery要高级一些。我建议对AJAX、REST和基本http请求进行一些研究。
<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;">