14

我想从跨域 URL 中获取 HTML 响应页面。

为此,我使用 ajax 请求,

 $.ajax({
            type: 'GET',
            url: "http://wcidevapps.com/salescentral/idisk/0001000383/iDisk",
            dataType: "json",
            success: function (response) {
                $(response).find('li a').each(function () {
                    listHref.push($(this).attr('href'));
                });

            }
        });

但是在请求之后它没有回复任何结果。

4

4 回答 4

6
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
  <script type="text/javascript">
    function NameAFunctionName() {
        $.ajax({
          url: 'http://wcidevapps.com/salescentral/idisk/0001000383/iDisk',
          type: 'GET',
          dataType: 'json',
          headers: {
            //WRITE IF THEIR HAVE SOME HEADER REQUEST OR DATA
          },
          crossDomain: true,
          success: function (data, textStatus, xhr) {
            console.log(data);
          },
          error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
          }
        });
    }   
</script>
于 2014-11-03T07:10:20.440 回答
5

检查文档: http ://api.jquery.com/jQuery.ajax/

crossDomain (默认:同域请求为 false,跨域请求为 true)

类型:布尔值

如果您希望在同一域上强制执行跨域请求(例如 JSONP),请将 crossDomain 的值设置为 true。例如,这允许服务器端重定向到另一个域。(添加的版本:1.5)

于 2013-03-18T13:04:49.257 回答
3

如果您使用的是 asp.net 网络服务,那么您需要将其添加到 webconfig 文件中;

<system.webServer>
    <directoryBrowse enabled="true"/>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
</system.webServer>
于 2013-12-18T13:16:09.080 回答
3

我怀疑您看到了这个问题,因为您请求的页面没有响应 json(p) 响应,而是响应重定向到:

http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/

(注意尾部斜杠)

然后返回内容类型:

Content-Type:text/html;charset=ISO-8859-1

编辑:如果您打算跨域检索上述站点的数据,以便您的脚本进一步解析,我建议您选择以下之一:

假设 1可以控制服务器“ http://wcidevapps.com ”上的页面

在这种情况下,您有两个选择:将 CORS 标头“Access-Control-Allow-Origin: *”添加到响应中(并使用 dataType:"html" 配置客户端 ajax() 调用),或者创建一个特殊的 JSON( P) 提供与 JSON 相同数据的页面(带填充)(并像在 OP 中一样配置客户端 ajax() 调用,使用 dataType:"jsonp")

假设 2无法控制服务器http://wcidevapps.com上的页面

在这种情况下,我能想到的唯一选择是在您控制的站点上设置代理。让该代理“代理”对“ http://wcidevapps.com ”的请求/响应,但将 CORS 标头“Access-Control-Allow-Origin: *”添加到响应中(并使用配置客户端 ajax() 调用数据类型:“html”)

于 2013-03-18T13:21:45.850 回答