4

AJAX ポスト リクエストからのコールバックを使用して新しいページに移動していますが、Internet Explorer では機能しません。私のコードは次のとおりです。

$.ajax({ 
    type: "POST",
    url: phpUrl,  
    data: data,  
    async: false, 
    success: function() {       
         if (navigator.appName == 'Microsoft Internet Explorer'){   window.location.href("/step2.php")}
         else{ window.location.href = "/step2.php"}             
    },  
    dataType:'json'         

}); 

これは FF/Safari/Chrome では正常に動作しますが、IE でテストすると動作しません。新しいページにリダイレクトするより良い方法はありますか? リクエストが完了async:falseする前にページが変更されるため、コールバックを使用しなかった場合、データが Chrome/Safari に読み込まれませんでした。POST

4

3 に答える 3

5

それは括弧です。 hrefは関数ではないため、それを呼び出そうとするとwindow.location.href("/step2.php")— — はTypeError.

href次の行で行うようにに割り当てるか、より良い方法として、次を使用しlocation.assign()ます。

location.assign('/step2.php');

locationのプロパティ ( ) に直接割り当ててlocation.href='...';ブラウザをナビゲートすることはできますが、これはお勧めしません。

内部的には、とにかく呼び出すだけlocation.assign()であり、プロパティへの割り当ては、すべてのブラウザーで常に同じように動作するとは限りません


についてはasync:false、絶対にしないでください。同期 XHR リクエストを行う場合、それは間違っています 報告された IE9 ハングの8.4%は、同期 XHR がブラウザーをブロックしたことが原因でした。

コールバックにあるとすれば、への割り当てlocationは POST が完了するまで行われないため、「POST が完了する前にページが変更される」という意味がわかりません。(フォームのキャンセルを忘れていませsubmitんか?)

于 2012-04-18T02:11:13.683 に答える
0

window.location.href = "/step2.php"大丈夫です。

于 2012-04-18T02:05:17.607 に答える