javascript - 外部 HTML 检索

标签 javascript jquery

我正在尝试获取 http://en.wikipedia.org 的内容通过ajax调用。为此,我正在使用 jQuery。这是代码:

jQuery.ajax({
  url:"http://en.wikipedia.org",
  crossDomain: true,
  dataType: "jsonp",
  jsonpCallback: "myCallback"
});

function myCallBack(data){
  console.log("ok");  
}

问题是我在 Firebug 中遇到了这个错误:

SyntaxError: syntax error
<!DOCTYPE html>

所以我会说提取了 html 内容,尽管没有运行回调函数。在某个时候它遇到指定的标记,抛出此错误并停止运行脚本。

您知道问题出在哪里吗?

有没有其他方法可以获取html页面的内容?我不想使用 iframe,因为那意味着我将无法使用或修改其内容。

最佳答案

这是因为您的 Ajax 函数需要来自提供的 url 的 json 响应,并且它会给出 html 响应,这就是您遇到语法错误的原因,您也会从 Chrome 调试器中得到同样的错误。

更新:

您尝试执行的操作称为跨域请求。

“出于安全原因,脚本无法访问其他域的内容。Mozilla 有一篇关于 HTTP access control 的长篇文章,但最重要的是,如果网站本身不添加对跨域请求的支持,你搞砸了。”

Reference

解决方案:

您可以通过为您创建外部页面的后端脚本来解决此问题。就像代理服务器一样,驻留在同一个域中,因此您不必面对跨域问题。 你可以加载它们,通过

$.get(url, success: function(data) { // the url that will fetch the external html page for you, located on the same domain
  console.log("ok");
});

关于javascript - 外部 HTML 检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13741551/

相关文章:

javascript - promise 不等待完成

javascript - 在搜索框中输入值自动提交

javascript - 由于 margin-left 导致的 jQuery 意外标记

javascript/Jquery 代码组织

javascript - 如何根据数组显示类别子类别

javascript - Backbone.js 如何在不使用 ID 的情况下跟踪 DOM 元素?

jQuery Shake UI 问题

javascript - Mootools 验证与 jQuery Slide 的脚本冲突

javascript - 如何添加指向部分谷歌饼图的链接

javascript - 使用 javascript 的当前时间未获取正确的位置