【问题标题】:$.get not returning html [closed]$.get 不返回 html [关闭]
【发布时间】:2012-05-24 12:22:06
【问题描述】:

我的简单代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="jquery.js"></script>
<script type="text/javascript">
$(function(){
$.get("http://www.facebook.com",function(data){
alert(data);});

});</script></head>

 <body>
</body>
</html>

它应该提醒 facebook 内容,但它没有这样做

更新

现在我正在使用 php

<?php
 $str=file_get_contents("http://www.facebook.com");
    echo strip_tags(htmlspecialchars($str)); 
?>

为什么不删除标签?

【问题讨论】:

  • 这是跨域请求,无法使用。只有像 JSONP 这样的请求才会起作用。
  • 因为您使用 htmlspecialchars() 对它们进行了编码,因此不再是标签而是 HTML 实体。
  • 但是当删除 htmlsecialchars 并只使用 strip_tag 时,它向我展示了很多 js 代码

标签: php javascript jquery ajax facebook


【解决方案1】:

如果您在服务器端使用 php。您可以使用以下方法创建一个返回 html 的服务:

$html = file_get_contents('http://www.facebook.com');

ASP.NET:

using(WebClient client = new WebClient()) 
{
    string html = client.DownloadString("http://www.facebook.com'");
}

【讨论】:

  • 您的解决方案完美运行,但我只想要 facebook 向所有人显示的文本,而不是 html 代码和 js 代码
  • @Webtecher 在数据上使用 eitehr jquery 选择器(如果通过 ajax 调用获取)或使用正则表达式获取您想要的部分内容。为什么不为此使用 iframe? :)
【解决方案2】:

我猜你刚刚被浏览器阻止是因为Same Origin Policy。查看控制台,如果您尝试这样做,将会收到警告。

如果没有Cross-Origin Resource Sharing 或服务器端代理,您将无法读取跨域页面。

据我所知,做到这一点的唯一方法是在您的域上使用服务器脚本读取外部页面(wget、curl、fopen、还有什么)并返回它到您的页面。您的服务器充当读取远程页面的“桥梁”。

您可能听说过JSONP,它没有跨域限制,但您通过这种方式检索的不是 HTML/页面,而是脚本。

【讨论】:

  • 那么请告诉我正确的方法,如果可能的话
  • @Webtecher — 这是答案的第二段。
【解决方案3】:

由于Same Origin Policy,您无法从外部网站请求内容,除非使用 JSONP。但是,因为您请求的是 HTML,所以这不适用。

另一种方法是创建一个服务器端代理来获取 facebook.com 主页的 HTML,然后将该本地 URL 提供给 $.get() 函数。

【讨论】:

  • 那么请告诉我正确的方法,如果可能的话
【解决方案4】:

您只能在同一个域中发出 ajax 请求

但是您可以使用 JSONP 进行跨域请求
http://en.wikipedia.org/wiki/JSONP

参考这篇关于 ibm developerworks 的文章:
http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

【讨论】:

  • OP 正在请求页面,而不是包含数据的脚本。
  • 即使我们可以用这种方法获取网页,参考文章@JosephtheDreamer
  • 是的,您可以,但您需要将其包装在回调中。 OP 直接请求 HTML 页面。你会如何在 JSONP 中做到这一点?你能提供一个程序吗?
  • 是的,我同意,直接请求 url 是不可能的,但是 OP 可以在另一个域 mzl.la/JOvUK6 上实现 Access-Control-Allow-Origin。在asp.net OP 中可以使用System.Net 命名空间中的WebClient 类,在php OP 中可以使用curl 来获取远程站点数据。 bit.ly/KwluwSbit.ly/Jr9IFx
猜你喜欢
  • 2011-11-09
  • 1970-01-01
  • 2014-01-30
  • 2021-11-10
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多