Internet ExplorerでjQueryと$.post
を使用してAJAX呼び出しを実行しようとしましたが、「権限が拒否されました」というエラーメッセージが表示されるだけです。この問題は、他のページにアクセスした後、そのページにアクセスしたとき。
たとえば、アドレス行にURLを入力し、IE=ページをロードします。次に、ボタンをクリックして、スクリプトがJSONデータのロードを開始するようにします(データを提供するスクリプトは、同じサーバーで相対URLを使用してアクセスするので、ここでは別のドメインを使用しても問題はありません。同じホスト部分で絶対URLを使用することもできました。)
しかし、ページを更新してもう一度試すと、うまくいきます!別のページからそのページにアクセスしたときも同じです。最初は何も機能しませんが、「更新」をクリックすると、すべてが正常に機能します。
IEから「Permission denied」というエラーメッセージが表示されますが、他のすべてのブラウザではこの動作に気付きません。私は多くのことを試しましたが、問題がどこにあるのかまだ想像できませんので、問題が何であると思うかをあなたに尋ねたいのですか?
edit:小さな例:
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<script type="text/javascript" src="/ietest/jquery.js"></script>
<script type="text/javascript" src="/ietest/test.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<a href="#">Test</a>
</body>
</html>
ajax.html
It works!
test.js
$(document).ready(function(){
$( 'a' ).click(function(){
$.post( '/ietest/ajax.html', function( data ) {
alert( data );
});
});
});
ここで試してください: http://t1318.greatnet.de/ietest/test.html
Jquerysフォーラムの投稿 here から、headタグの最初のアイテムとしてコンテンツタイプメタを指定する必要があります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="/ietest/jquery.js"></script>
<script type="text/javascript" src="/ietest/test.js"></script>
</head>
<body>
<a href="#">Test</a>
</body>
</html>
ローカル(localhost)の場合、セキュリティ上の理由から、完全なパスが必要です。
私の場合、jqueryのバージョンを変更するとうまくいきました。バージョン1.9.1を使用する代わりに、今では1.12.4を使用しています。