跨域ajax请求
我想从跨域URL获取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')); }); } });
但是在请求之后,它没有回应任何结果。
<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>
我的怀疑是,你看到这个问题,因为你要求的页面没有响应与JSON(P)的回应,但响应redirect到:
http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/
(注意斜线)
然后返回内容types:
Content-Type:text/html;charset=ISO-8859-1
编辑:如果你的意图是检索上述网站的数据跨域,为了进一步parsing你的脚本,我build议你select下列之一:
假设1 : 您正在控制服务器“ http://wcidevapps.com ”上的页面
在这种情况下,你有两个select:或者在响应中添加CORS头“Access-Control-Allow-Origin:*”(并且用dataType:“html”)configuration客户端的ajax()调用,或者创build一个特殊的JSON P)页面提供与JSON相同的数据(使用填充)(并在OP中configuration客户端ajax()调用,使用dataType:“jsonp”)
假设2 : 您不能控制服务器http://wcidevapps.com上的页面;
在这种情况下,我能想到的唯一select是在您控制的网站上设置代理。 让代理将请求/响应“代理”到“ http://wcidevapps.com ”,但将CORS头“Access-Control-Allow-Origin:*”添加到响应中(并将客户端的ajax()调用数据types: “HTML”)
检查文档: http : //api.jquery.com/jQuery.ajax/
crossDomain (对于同域请求,默认为false,对于跨域请求为true)
types:布尔值
如果您希望在同一个域上强制使用跨域请求(例如JSONP),请将crossDomain的值设置为true。 这允许,例如,服务器端redirect到另一个域。 (增加版本:1.5)
如果您使用的是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>