【问题标题】:Getting data from other sites using javascript [closed]使用 javascript 从其他站点获取数据 [关闭]
【发布时间】:2013-01-10 08:43:02
【问题描述】:

我想从其他网站获取 div 中的数据。 我怎样才能使用 JavaScript 做到这一点?

【问题讨论】:

  • 您将需要使用 JSONP - 请参阅此链接:stackoverflow.com/questions/1197802/…
  • 取决于你想要的数据。通常你可以使用 AJAX 异步加载数据 api.jquery.com/jQuery.ajax/
  • @jungalist:JSONP 用于将 JSON 作为script 获取,以便您可以跨域通信。它对页面内容没有帮助。
  • 任何来自 OP 的 cmets ?或者我们应该关闭这个话题?

标签: javascript jquery


【解决方案1】:

由于跨域限制,您无法使用 AJAX 直接访问 html。

但是,您可以使用 Yahoo YQL 选择您想要的页面部分,并在 jsonp 数据中返回该 html。

stackoverflow 主页返回问题列表示例

var url='http://query.yahooapis.com/v1/public/yql?q=select * from html where url=\'http://stackoverflow.com/\' and xpath=\'//div[@id="question-mini-list"]//h3//a\'&format=json&callback=?';


$.getJSON( url, function(data){
    $.each(data.query.results.a, function(){       
        $('body').append('<div><a href="http://stackoverflow.com'+this.href +'">'+this.content+'</a></div>')          
     })
})

演示:http://jsfiddle.net/NTUx5/

YQL 文档:http://developer.yahoo.com/yql/guide/index.html

编辑:这不再起作用了。

【讨论】:

  • tekniksel.net/api/get_recent_posts/?dev=1 如何使用 JavaScript 从给定链接中获取“URL”和“标题”?
  • 试试这个演示来解析来自你的 API jsfiddle.net/45Na7的数据
  • @charlietfl 我在我的网站上使用你的代码,所以首先:谢谢!我只是希望你能解释一些关于代码的事情,因为我讨厌使用我不完全理解的东西。在查询中的“var url”中,您使用@id="question-mini-list"。我查看了堆栈的 html,并没有那个名字,那为什么会这样呢?第二:在“每个”中,data.query.results.a 我没有看到“查询”或“结果”在其他任何地方使用,那么你怎么知道使用这些?最后一个问题:在你的 'url' 末尾为什么 'callback=?' ?太感谢了! :)
  • 伟大伟大伟大的例子
  • 这行不通了
【解决方案2】:

你要么必须use the JSONP technique,就像上面的jungalist建议的那样;或者让您的 AJAX 方法与使用 cURL 的本地 PHP 脚本对话:

jQuery:

$('#result').load('path/to/script.php');

PHP:

$ch = curl_init("http://example.com");
curl_exec($ch);
curl_close($ch);

【讨论】:

  • curl_setopt($ch, CURLOPT_FILE, $fp); - 看起来很不相关,会导致 E_NOTICE。您应该删除它和 fclose 调用。 CURLOPT_HEADER 默认为 false,因此该行也可以省略。
  • 至少用一种不那么明显的方式来表达你的“建设性cmets”
猜你喜欢
  • 1970-01-01
  • 2013-06-10
  • 2012-05-01
  • 2014-04-16
  • 1970-01-01
  • 2011-02-07
  • 2019-05-13
  • 1970-01-01
相关资源
最近更新 更多