跨域ajax请求

时间:2013-03-18 13:03:36

标签: html ajax jquery asp.net-ajax

我想从跨域网址获取html响应页面。

为此我使用ajax请求,

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

            }
        });

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

4 个答案:

答案 0 :(得分:5)

<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>

答案 1 :(得分:4)

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

  

crossDomain (对于同域请求,默认值为false,对于跨域请求,则为true)

     

类型:布尔值

     

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

答案 2 :(得分: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:*”添加到响应中(并使用dataType配置客户端ajax()调用: “HTML”)

答案 3 :(得分:2)

如果您使用的是asp.net Web服务,则需要将其添加到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>