JavaScript从其他站点获取数据

时间:2015-03-09 13:58:50

标签: javascript

我对JS很新,并且有一个问题。是否可以从其他网站提取数据以供您自己使用?例如,假设我有一个JS Web应用程序,允许用户输入他们的Twitter用户名,然后脚本转到此用户名并查找跟随者计数元素并拉出该数字以显示回Web应用程序。我确信有一些API可以做类似于特定Twitter的例子,但是我对能够访问其他网站上的数据的一般想法有了更多的了解。怎么做到呢?肯定有一种方法,如果我的浏览器可以访问所有这些信息,对吧?您是否需要将一个不可见的iFrame放入应用程序并使用JS搜索它?

2 个答案:

答案 0 :(得分:0)

要将其置于新手的基本术语中,只有当相关网站具有API(专门用于允许外部访问)时,才可以使用此功能。有时他们很容易理解和设置。

以一种并非真正设计用于支持的方式访问外部网站的内容已经发生,但它通常被称为“黑客”。对于非常基本类型的站点,有时很容易做到,但是大多数请求登录信息的站点都禁止它。 (除上述API外)。最大的担忧是,如果有人已经在他们的浏览器上登录Twitter,那么可疑来源的外部网站可能会自动将不良内容发布到您的帐户,而您甚至不会访问Twitter。

答案 1 :(得分:0)

是的,这是可能的。

最好的方法是将 ajax (异步JavaScript和XML)与 jsonp (带填充的Javascript对象表示法)数据类型一起使用。

要使用此方法,您要连接的服务器应该期望请求,以便它可以使用jsonp进行响应(它只是由您在发出请求时定义的回调函数包装的json数据)。

过程:

1)您的代码向其他服务器发出ajax请求,向网址添加回调函数。它非常普遍使用" 回调" param名称,但服务器可以定义它更喜欢的变量名称。

http://other-server-url.com/?callback=myFunction

这里一个好的简单方法是使用jQuery。如果在ajax调用中定义 dataType:" jsonp" ,jQuery会在收到响应时处理附加回调并执行正确函数的过程。看看jQuery's ajax docs并阅读一些关于jsonp跨域请求的信息,这是一个好主意。

$.ajax({
    type: "POST",
    dataType:"jsonp",
    url: "http://other-server.com/",
    data: { name: "John", location: "Boston" }
}).done(function( msg ) { // this function will be executed when you get the response
    alert( "Data Saved: " + msg );
}); 
  • 此jQuery方法仅在参数名称为回调时有效。如果不是,您应该自己处理,或者深入了解文档以了解如何使用jQuery。

2)服务器应该等待这些"回调" param并以jsonp数据格式响应您的请求。它只是json data format被您作为回调传递的函数包装。像这样:

myFunction({ json-data });

3)当你得到响应时, myFunction 函数将自动执行,并以json数据作为参数:

function myFunction(myData) {
    console.log(myData); // this will log the data on the browser console
}

我希望我有所帮助。良好的编码。