2009-11-28 5 views
6

は/ポストはIEで動作していない7/8 7/8ここjqueryのAJAXは、IE上で動作していない私はアヤックスが得る理由をデバッグしようとしています

私のコード:今、この

$.ajax({type: "POST", dataType:'html',url: "/places/set_member/add/",data: "place_id="+place_id , 
         beforeSend: function() {$("<span class='notice'>Saving...</span>").prependTo('body');}, 
         success: function(){ 
         $.ajax({type:"GET",url:url,success:function(html){$('div.place-list .ui-tabs-panel').html(html);},complete:function(){resetAddThis();}}) 
         }, 
       complete: function() { 
          $('span.notice').fadeOut(500); 
       $('span.notice').remove(); 
          }}); 

FF Safari Win/Macではうまくいきますが、IE 7/8ではうまく動作しません。

私はfiddlerをダウンロードして呼び出しを監視しました。スクリプトはサーバーにデータを送信し、次に新しい更新情報を持つHTMLを再読み込みすることになっています。何が起こっているのは最初の呼び出しでエラー500が発生しますが、htmlが再ロードされた後、同じアクションが再度実行されると200msで送信され、保存していないという外観を与えます2度目の試合で。

私が間違っていることや追加したいことがありますか?これはphpのループなので、この関数はページ上の20-30項目の同じリンクに適用されています。

+0

なぜ2つのajaxコールを作成していますか? "/ places/set_member/add /"に保存するようリクエストしたら、必要なhtmlを返してから、別のajax呼び出しを行って取得します。 – PetersenDidIt

+0

悪い考えではなく、私はこれよりもむしろ新しいので、どうやってそれを行うのかは分かりませんでした。 – matthewb

答えて

12

IEキャッシュはPOSTタイプではないすべてのajax呼び出しをキャッシュします。私は空のデータをポストしてもIEを避けるためにすべてのAjaxにPOSTを呼び出させるのが最善であることがわかりました。

それとも@redsqaureは、以下のとおり行い、これを行うことができます。

$ .ajaxSetup({キャッシュ:偽})最後に

+0

私はこれを試してみます。なぜなら、最初の500の内部エラーが表示される理由は、リクエストがすでに送信されキャッシュされているためですか? – matthewb

+0

ありがとうございました、1つの投稿を行い、その返信は私の問題をhtmlで修正しました。私はもう何もGETを行っていません。 – matthewb

+7

グローバルな$ .ajaxSetup({cache:false})だけを使用してください。これは、すべてのxhr要求に対してキャッシュをオフにします。あなたが取得したいときにポストをしないでください.... – redsquare

2

IEキャッシュajax呼び出し。 &rand=[some randomly generated something]のように、乱数またはランダムな文字列を呼び出して再試行してください。

0

「http://mysite.com/api/」: は、私はちょうどからURLパラメータを変更しましたので、「同一生成元ポリシー」とだけIEに上げる!: である私の問題を解決しました'/ api /' それが動作します!

あなたのお役に立てれば幸いです!ほとんどのブラウザで

-1

次のように指定することができます:jQueryのAJAX呼び出しのために...

url: '' 

を、これはそれ自体に掲載します。

IEでは、URLを指定する必要があります。

url: '/relative/path/to/script' 
+0

なぜあなたはダウン投票を持っているか分かりません。これは私の正確な問題でした。ありがとう! – Jeremy

4

データ型をHTMLにする必要がない場合は、これを試すことができます。

$.ajax({   
    url: 'Enter URL' 
    dataType: 'jsonp', 
    type: 'get', 
    success: function (data) { } 
}); 
0

jquery 2.0.2と同じ問題がありました。私はjQueryを1.8.1に変更し、AjaxはIEで完璧に動作しました。

関連する問題