Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 外部HTML检索_Javascript_Jquery - Fatal编程技术网

Javascript 外部HTML检索

Javascript 外部HTML检索,javascript,jquery,Javascript,Jquery,我试图通过ajax调用获取的内容。为此,我使用jQuery。代码如下: jQuery.ajax({ url:"http://en.wikipedia.org", crossDomain: true, dataType: "jsonp", jsonpCallback: "myCallback" }); function myCallBack(data){ console.log("ok"); } 问题是我在Firebug中遇到以下错误: SyntaxError: syn

我试图通过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>
SyntaxError:语法错误
因此,我会说html内容是获取的,尽管回调函数没有运行。在某些时候,它遇到指定的标记,抛出此错误并停止运行脚本

你知道问题出在哪里吗


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

its因为您是Ajax函数,它期望从提供的url得到
json
响应,并给出
html
响应,这就是您得到语法错误的原因,同样的错误也会从Chrome调试器中得到

更新:

您试图做的就是跨域请求

“出于安全原因,脚本无法访问其他域的内容。Mozilla有一篇很长的文章,但底线是,如果网站本身不增加对跨域请求的支持,你就完蛋了。”

解决方案:

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

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

这是因为您是Ajax函数期望从提供的url得到
json
响应,并给出
html
响应,这就是您得到语法错误的原因,与您从Chrome调试器得到的错误相同

更新:

您试图做的就是跨域请求

“出于安全原因,脚本无法访问其他域的内容。Mozilla有一篇很长的文章,但底线是,如果网站本身不增加对跨域请求的支持,你就完蛋了。”

解决方案:

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

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

您在这里遇到的问题是,您正在跨域呼叫。尽管您似乎已经意识到这一点,并且正在为您的请求使用jsonp,但您试图获取的ie wikepedia文档不是jsonp文档。因此,一旦ajax找到html标记,它就会抛出一个arror,正如您所定义的,您期望的是jsonp响应

由于跨域问题,您不能仅使用javascript跨域拉取其他网站的数据,如果您想要完成您在这里所做的工作,您将需要使用后端语言来获取数据

有用的链接是
希望这对您有所帮助

您在这里遇到的问题是您正在跨域呼叫。尽管您似乎已经意识到这一点,并且正在为您的请求使用jsonp,但您试图获取的ie wikepedia文档不是jsonp文档。因此,一旦ajax找到html标记,它就会抛出一个arror,正如您所定义的,您期望的是jsonp响应

由于跨域问题,您不能仅使用javascript跨域拉取其他网站的数据,如果您想要完成您在这里所做的工作,您将需要使用后端语言来获取数据

有用的链接是 希望这有帮助

有没有办法“告诉”jQuery希望html内容而不是json?JSONP响应(即
application/javascript
)不是json响应。有没有办法“告诉”jQuery希望html内容而不是json?JSONP响应(即
application/javascript
)不是json响应。