我正在尝试获取 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 的长篇文章,但最重要的是,如果网站本身不添加对跨域请求的支持,你搞砸了。”
解决方案:
您可以通过为您创建外部页面的后端脚本来解决此问题。就像代理服务器一样,驻留在同一个域中,因此您不必面对跨域问题。 你可以加载它们,通过
$.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/