2016-11-24 14 views
0

jQuery 1.11からjQuery 3.0に移行してから問題が発生しました。私はjQueryのPOSTリクエストを実行しています。その前に、最初にhtml(data.responseText)を終了してから、次のコードに移りました。このように:data.responseTextでalert()が表示される前にhtml()が更新されていません

$.ajax({ 
    type: "POST", 
    url: "/files/" + url, 
    data: $("#entryForm").serialize() + '&journal_id=' + journalId, 
    complete: function(data) { 
     $('#saveResults').html(data.responseText); 
     alert("function done"); 
    } 
}); 

最初に実行alertがあり、機能html()完了した後、他のalert("function done")を走っていました。

alert("function done")が最初に実行されているため、html()の機能が表示されていません。これは、responseTextからの警告がalert("function done")の後に来るためです。だから私はこれを試みた:

$.ajax({ 
    type: "POST", 
    url: "/files/" + url, 
    data: $("#entryForm").serialize() + '&journal_id=' + journalId, 
    complete: function(data) { 
     $('#saveResults').html(data.responseText).promise().done(function() { 
      alert("function done"); 
     }); 
    } 
}); 

残念ながら、これは私の問題を解決しませんでした。誰でもそれを修正する方法アイデア?

+3

走っている' 2番目の試みがない理由である(同期しています'alert()'が表示される前に完了する必要があります)。私は、UiがDOMで直ちに更新されず、 'alert()'がスレッドをブロックするブラウザレンダラーとの不一致しか想定していません。 'alert()'を短いタイムアウト(例えば10ms)で 'setTimeout()'コールに入れてみることができます。 –

+0

html()関数の後のjqueryイベントの可能な複製](http://stackoverflow.com/questions/11826484/jquery-event-after-html-function) –

+0

@RoryMcCrossan jQueryは 'の'

関連する問題