2011-06-03 10 views
4

でIEを送信しないGET:jQueryのは、私が働いているプロジェクトで次のコードの塊を持っているブラウザ

if(!validate($(".emailbody input").val())){ 
    ... 
} 
else{ 
    $.get("https://get.request.com/something", {email:encodeURI($(".emailbody input").val())}) 
    .complete(function(){ 
     $(".emailbody").append($('<p class="emailsucess">Kiitos! Linkki rekisteröitymisen jatkamiseen on lähetetty sähköpostiisi: '+$(".emailbody input").val()+'</p>')); 
     $.post("http://post.request/confirm.php", {"confirm":$(".emailbody input").val()}) 
     $(".emailbody input").val(""); 
    }); 
} 

簡単なのget requstが接続されているサービスのデータベースに物事を置き、その後、ポスト応答はローカルホストからのメールを起動します。これは非常に喜んで動作し、いかなる問題もなく、しかし、IEでGET呼び出しでもネットワーク上に表示されていないIE以外の他のすべてのブラウザ(すべてのバージョン)では

私の問題はこれですトラフィック、それは無視され、呼び出されませんが、完全な呼び出しはOKを通過したかのように行われます!

これはhttpsサービスに問題がありますか、それとも私が逃したことがありますか?

UPDATE: アイブようになりまし働いている外部のサーバにGETリクエストにpingを実行し、ローカルファイルへのポスト呼び出しを行うことで問題を回避得たが、物事のその愚かな方法。これにいくつかの光を当てることができる誰もが大いに感謝します。

+1

は終わりにランダムな値変数、またはタイムスタンプを追加してみてください。 IEは要求をキャッシュする厄介な習慣を持っています。 – JohnP

+0

送信されたアドレスを変更しても、タイムスタンプ変数を追加しても、それでもやってみると、送信しようとするようなことはありません。 – longstaff

+0

'https:// get.request.com'はページがオンのドメインですか?送信ページも既にhttpsに入っていますか? –

答えて

6

キャッシングの問題のようです。 GETリクエストをキャッシュすることができますので、これを避けるためにURLにランダムなクエリーストリング・パラメータを追加してみてください。またはcache: false$.ajaxを使用します。

$.ajax({ 
    url: 'https://get.request.com/something', 
    type: 'GET', 
    data: { email: $(".emailbody input").val() } // <-- note that you don't need to encode here, jQuery will take care of this 
    cache: false, 
    success: function(result) { 
     ... 
    } 
}); 

はまた、あなたがsame origin policy restrictionを尊重することを確認してください。これを保証する最も良い方法は、相対URLを使用することです。だから、代わりに:

'https://get.request.com/something' 

使用:

'/something' 
+0

HTTPでimが使用されているときにhttpsサービスからの応答を取得しようとしているため、同じ原点ポリシーを使用することはできません。したがって、relitive値は機能しません。私はそれがキャッシングの問題だとは思っていません。なぜなら、あなたがそれを最初からやっているときでさえ、サブクエリの試みだけでなく、キャッシュするチャンスがあるからです。他のアイデア? – longstaff

関連する問題