今日の書き込みコードは、非常に単純な削除機能を記述し、それはあなたと、この書き込みダウンとシェアで、何とかAJAXの実行順序上の問題が発生しました。
最初のコード。
//第一步先同步删除
layer.confirm("确认删除所选数据?",function(){
$.ajax({
type:"post",
url:url,
data:{"ids":ids},
async:false,
traditional: true,
success: function (data) {
if(data.code=="1"){
layer.msg('删除成功')
}else{
layer.msg('删除失败')
}
},
});
});
//删除完毕后再刷新表格
F5();
非常に明確なロジック、最初のページ・テーブルを更新し、その後、データベース同期AJAX内のデータを削除します。
理想的にはいっぱいある、現実は非常に細いですが、私は実際に編集者注ああ「選択したデータの削除を確認するために、」この削除方法がポップアップする前にリフレッシュを実行することです発見しました!ブラザーは、多分、すぐにこの方法を考えlayer.confirmが非同期であるかどうか、その直後に層の窓を交換し、そして実際に、このメソッド内でlayerUiが本当に非同期であることがわかった、すぐにこのにコードを置きます。
layer.confirm("确认删除所选数据?",function(){
$.ajax({
type:"post",
url:"${ctx}/patrol/patrol!deleteBo.action",
data:{"ids":ids},
async:false,
traditional: true,
success: function (data) {
if(data.code=="1"){
layer.msg('删除成功')
}else{
layer.msg('删除失败')
}
},
});
//第二步的刷新
F5();
});
これは最終的にlayer.confirmの最初の実装ですが、私はまた、彼は実際に私が削除成功にポップする前にリフレッシュを実行するコードを持っていることが判明し、これは、私ははっきりと同期AJAX何ああ、ああです彼は明らかに、なぜ彼がそれをリフレッシュ行きました、Ajaxの下から全体的に実行する必要があります。
私はそれが同期同期ではない、と思っ成功、AJAXリクエストを同期させるだけの同期、そして、私は入れていないだけでリフレッシュすることができます成功は常に、このような状況に与えるために不本意内部を、しかし、プログラマが追求しているよう私はすぐに引数がある、AJAXを考え、完全には、次のようにすぐにコードを変更します。
layer.confirm("确认删除所选数据?",function(){
$.ajax({
type:"post",
url:"${ctx}/patrol/patrol!deleteBo.action",
data:{"ids":ids},
async:false,
traditional: true,
success: function (data) {
if(data.code=="1"){
layer.msg('删除成功')
}else{
layer.msg('删除失败')
}
},
complete: function(XMLHttpRequest, textStatus) {
//这里执行刷新
F5();
},
});
});
ファイル名を指定して実行、ブーム、爆発は、それが実際に完全リフレッシュの内部を実行しなければ、成功は非同期であり、不信者がクエリ波Baiduのために行く、あなたが完了ファック、それは同じものであってはならない、我々は多くの人々があることがわかりました言います。
最後に類推、機能性の観点から、完全に間違っていないが、順序完全に間違っああをキャッチしようとするために使用されている、それは奴隷の異なる視点だ、物事を見ての考え方は同じではありません。
そして、いくつかのテストの後、私は関係なく、同期、非同期は、完全なメソッドが最初に実行されている、それだけでサーバーを尋ねるために起こって、それが応答に返すことがわかったが、彼らはデータレベルにアクセスし、データを返すために必要な成功、これまた、そのためには、その最終的に私はこれにコードを入れ、中に与えた側。
layer.confirm("确认删除所选数据?",function(){
$.ajax({
type:"post",
url:"${ctx}/patrol/patrol!deleteBo.action",
data:{"ids":ids},
async:false,
traditional: true,
success: function (data) {
if(data.code=="1"){
layer.msg('删除成功')
}else{
layer.msg('删除失败')
}
//这里刷新
F5();
},
});
});
まあ、それは小さな問題ではあるが、取得したが、その同期、非同期もより良い理解を持っていながら、この時点で、私は、成功と完全なAJAXの違いをより完全に理解しています。