使用 .ajax() 加载远程 URL - 不起作用
我正在尝试加载远程 URL(或者只是测试远程页面是否存在)。
这工作得很好:
$(function() {
$.ajax({
url:'localtest.html',
type: 'html',
success: function(content,code) {
alert(code);
$('body').html(content);
}
});
});
但是交换一个远程 URL,我什么也没得到:
$(function() {
$.ajax({
url:'http://www.google.com/',
type: 'html',
success: function(content,code) {
alert(code);
$('body').html(content);
}
});
});
有什么办法可以做到这一点吗?
I'm trying to load a remote URL (or rather just test to see if a remote page exists).
This works just fine:
$(function() {
$.ajax({
url:'localtest.html',
type: 'html',
success: function(content,code) {
alert(code);
$('body').html(content);
}
});
});
But swap in a remote URL and I get nothing:
$(function() {
$.ajax({
url:'http://www.google.com/',
type: 'html',
success: function(content,code) {
alert(code);
$('body').html(content);
}
});
});
Is there any way to do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
出于安全原因,AJAX 不支持跨域调用。
传统的解决方法是使用 jsonp
AJAX doesn't support cross domain calls, for security reasons.
The traditional way around it is using jsonp
浏览器阻止 Ajax 跨域访问资源(SOP = 同源策略)。仅当服务器配置为指向您的域(或 * 或类似)的“Access-Control-Allow-Origin”时,它才有效。
Browsers prevent Ajax from accessing resources cross domain (SOP = same origin policy). It will only work if the server is configured for "Access-Control-Allow-Origin" pointing to your domain (or * or similar).
这是因为浏览器不会允许跨站点请求,除非远程服务器通过发送 Access-Control-Allow-Origin 标头明确允许它。如果您只想测试是否存在,您可以使用 onload 和 onerror 事件将 URL 加载到图像标记中。但您将无法访问远程 URL 的内容;这是为了安全。否则,例如,您可以在某人不知情的情况下加载 Facebook 并阅读某人的留言墙。
This is because the browser won't allow cross-site requests unless the remote server explicitly allows it by sending an Access-Control-Allow-Origin header. If you just want to test existence, you might be able to load the URL in an image tag with an onload and onerror event. You won't be able to access the contents of the remote URL though; it's for security. Otherwise, for example, you could load facebook and read someone's wall without them knowing.
这不是正确的 ajax 调用。假设您正在执行检索操作,类型应该是“GET”。 'html' 应该是 dataType 属性。
而且,正如任何人所补充的那样,由于您正在调用 google.com,因此您必须提供 jsonp 回调,因为同源政策..希望有所帮助。
This is not a right ajax call. The type should have been 'GET' assuming you are doing a retrieval operation. What should be 'html' is the dataType attribute.
and also, as anybody has added, since you are making a call to google.com, you have to provide a jsonp callback, because of same origin policy..hope that helps.
出于安全原因,AJAX 不支持 CORS(跨源资源共享)。
For security reasons,AJAX doesn't support CORS(cross origin resource sharing).
在 AJAX 调用中使用属性。
并确保您正在加载内容的 html 页面的元数据标记。
Use attribute in AJAX call.
And do make sure meta data tag of html page where you are loading contents.