[英]Cross domain ajax request
我想從跨域 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'));
});
}
});
但是在請求之后它不會回復任何結果。
<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>
檢查文檔: http : //api.jquery.com/jQuery.ajax/
crossDomain (默認:同域請求為假,跨域請求為真)
類型:布爾型
如果您希望在同一個域上強制執行 crossDomain 請求(例如 JSONP),請將 crossDomain 的值設置為 true。 例如,這允許服務器端重定向到另一個域。 (版本添加:1.5)
我懷疑您看到這個問題是因為您請求的頁面沒有響應 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”)
如果您使用的是 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.