2012-01-27 36 views
7

IEでのHTTPS Ajaxコールで問題が発生していません。 IEは私がクロスドメインのリクエストをしていると思うようですが、私はそうではありません。この要求は、IE以外のすべてのブラウザでは正常に動作しますHTTPSでのAjaxリクエストに関する問題(クロスドメインではない)

$.ajax({ 
    type: 'post', 
    url: 'https://mydomain/ajax/retrieve_transaction_details.php', 
    data: /* my data is here */, 
    success: function(response){ 
     // do something with the response 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

:次のコードは、ページhttps://mydomain/customer_profile.phpから呼び出されます。 IEでは、エラー関数は "エラー:アクセスが拒否されました"を返します。私が言ったように、私はこれを完全に困惑しているので、どんな洞察力やアイデアも素晴らしいでしょう。

+1

'https:// mydomain'を使わずに試してみてください。だから、 "/ajax/retrieve_transaction_details.php"というURLで試してみてください。 –

+0

私はこれを試しました。どんな理由であれ、絶対パスを指定しなければ、他のブラウザはHTTP経由でリクエストを作成しようとします。 –

+0

おそらく、互換性のためにIEを使用し、他のブラウザを使用していれば、既に動作しているコードに転送する場合、パスをたどるブラウザのチェックを追加してください。 – HenryGuy

答えて

3

私はあなたのHTMLのヘッドセクション内<base>タグを使用していると思います。右?

それはhttp代わりのhttpsを指している場合、それは、IEを破ります。

+0

うわー、それは実際にはそうです。私は完全に私のヘッダーテンプレートでそのタグをスローしたことを忘れてしまった。面白いのは、IEでそれを壊しただけですが、私はそれがIE用だと思います。ありがとう! –

2

は、このようなあなたのリクエストでtrueにクロスドメインを設定してみてください:

$.ajax({ 
    type: 'post', 
    url: 'https://mydomain/ajax/retrieve_transaction_details.php', 
    data: /* my data is here */, 
    crossDomain: true, 
    success: function(response){ 
     // do something with the response 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

これは、あなたは関係なく、それがクロスドメインであるかどうかの要求を行うことができなければなりません。

+0

ええと、これはエラーを「転送なし」に変更しました。面白い。 –

+0

この記事を見てください:http://stackoverflow.com/questions/5241088/jquery-call-to-webservice-returns-no-transport-error –

関連する問題