JavaScript 从其他站点获取数据

JavaScript Get Data From Other Site

本文关键字:获取 数据 站点 其他 JavaScript      更新时间:2023-09-26

我对JS相当陌生,有一个问题。是否可以从另一个网站中提取数据以在您自己的网站中使用?例如,假设我有一个 JS Web 应用程序,允许用户输入他们的 Twitter 用户名,然后脚本转到此用户名并查找关注者计数元素并拉出该数字以显示在 Web 应用程序中。我确信有API之类的东西可以做一些特定的Twitter示例,但是我对能够访问其他站点上的数据的一般想法有了更多的了解。怎么能做到呢?当然,如果我的浏览器可以访问所有这些信息,有一种方法,对吧?您是否必须将不可见的iFrame放入应用程序中并使用JS进行搜索?

新手的基本术语来说,这只有在相关网站具有专门设计用于允许外部访问的 API 时才有可能。有时它们很容易理解和设置。

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

是的,这是可能的。

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

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

过程:

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

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

一个好的和简单的方法是使用jQuery。如果您在 ajax 调用中定义 dataType:"jsonp",jQuery 将处理追加回调的过程,并在您获得响应时执行正确的函数。最好看看jQuery的ajax文档,并阅读一些关于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)服务器应该等待这些"回调"参数,并使用jsonp数据格式响应您的请求。它只是由您作为回调传递的函数包装的 json 数据格式。喜欢这个:

myFunction({ json-data });

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

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

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