クロスドメイン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>
ドキュメントを確認してください: http://api.jquery.com/jQuery.ajax/
crossDomain(デフォルト:同じドメインのリクエストの場合はfalse、クロスドメインのリクエストの場合はtrue)
タイプ:ブール
同じドメインでcrossDomainリクエスト(JSONPなど)を強制する場合は、crossDomainの値をtrueに設定します。これにより、たとえば、サーバー側から別のドメインへのリダイレクトが可能になります。 (追加されたバージョン:1.5)
私が疑っているのは、リクエストしているページがjson(p)応答ではなく、次へのリダイレクトで応答するため、問題が表示されることです。
http://wcidevapps.com/salescentral/idisk/0001000383/iDisk/
(末尾のスラッシュに注意してください)
次にコンテンツタイプを返します。
Content-Type:text/html;charset=ISO-8859-1
Edit:上記のサイトのデータをクロスドメインで取得する場合、スクリプトでさらに解析するために、次のいずれかを選択することをお勧めします:
仮定1:[〜#〜] you [〜#〜]はページを制御していますサーバー " http://wcidevapps.com "
その場合、2つのオプションがあります。CORSヘッダー "Access-Control-Allow-Origin:*"を応答に追加する(およびdataType: "html"でクライアントajax()呼び出しを構成する)か、特別なJSON( P)JSONと同じデータを配信するページ(パディングあり)(およびOPのようにdataType: "jsonp"を使用してクライアントajax()呼び出しを構成します)
仮定2:[〜#〜] you [〜#〜]は[〜#〜] not [〜#〜]サーバー上のページの制御 http://wcidevapps.com
その場合、私が考えることができる唯一のオプションは、あなたが制御するサイトにプロキシを設定することです。そのプロキシに「 http://wcidevapps.com 」へのリクエスト/レスポンスを「プロキシ」しますが、CORSヘッダー「Access-Control-Allow-Origin:*」をレスポンスに追加します(そして構成します) dataType: "html"を使用したクライアントajax()呼び出し)
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>