使用AJAX获取任何页面

时间:2014-03-21 15:43:37

标签: javascript ajax

我是AJAX的新手,我认为这是一个简单的问题。我知道你可以创建一个响应AJAX调用的页面。是否可以通过AJAX调用获取任何页面?

所以我的意思是说,我可以用一个可以用URL做的AJAX调用吗?

编辑#1

感谢所有回复!真的帮助澄清了!

3 个答案:

答案 0 :(得分:4)

是和否。

AJAX是一种强大的机制,您可以通过该机制以灵活的方式检索和/或将数据加载到DOM中。您可以执行以下操作:抓取其他页面的内容并在页面上显示其全部或部分内容。但是有一个问题。

出于安全原因,您不能依赖于能够以跨域方式进行AJAX调用,除非正确配置了其他域上的服务器。这称为跨源资源共享(CORS)。你可以在这里阅读更多相关内容 - http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

或者,某些服务器将公开使用JSONP(带有填充的JSON)的API,这是同源策略(SOP)的一种解决方法,通常会阻止此类性质的跨域请求。在JSONP中,远程端点实质上将响应包装在javascript函数中。您可以在此处详细了解JSONP - http://en.wikipedia.org/wiki/JSONP

答案 1 :(得分:3)

与普通网址不同,您仅限于同一域内的请求。在这种情况下,有很多方法可以使用CORS或JSONP。

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing

答案 2 :(得分:-1)

没有

一个例子是你不能使用AJAX上传或下载文件。一种解决方法是将上传或下载定位到隐藏的iframe,并轮询该帧以获取响应。 更新:似乎对此的一些支持是HTML 5的一部分(请参阅https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications)。

第二个示例是将用户导航到另一个页面。您可以加载第二页并用它替换窗口的内容,但URL仍然是原始页面(浏览器的“刷新”和“后退”功能将相应地表现。)

第三个是跨域请求。 AJAX调用仅限于页面源自的域。