jQuery技术:如何使用一个提交按钮一个接一个地发布ajax?

我创建了一些调用ajaxpost的代码。 有时过程的顺序是正确的,有时则不是。 我想要一个总是有正确顺序的ajaxpost,从函数1到函数4.每个函数都有不同的表单值,所以我真的需要修复它。 任何人都可以查看我的代码吗?

 $(document).ready(function () { $('#unggah').submit(function (event) { //FUNCTION 1 this.reset(); $('#loading').show(); var formData = { 'tahun': $('input[name=tahun]').val(), 'jurusan': $('input[name=jurusan]').val(), 'posisi': $('input[name=posisi1]').val(), 'tabel': $('input[name=tabel]').val() }; $.ajax({ type: 'POST', url: 'operator_pt/unggah/', data: formData, Async:false, dataType: 'json', encode: true }) .done(function (data1) { console.log(data1); }) .fail(function (data1) { console.log(data1); }); event.preventDefault(); //FUNCTION 2 var formData2 = { 'tahun': $('input[name=tahun]').val(), 'jurusan': $('input[name=jurusan]').val(), 'posisi': $('input[name=posisi2]').val(), 'tabel': $('input[name=tabel]').val() }; $.ajax({ type: 'POST', url: 'operator_pt/unggah/', data: formData2, Async:false, dataType: 'json', encode: true }) .done(function (data2) { console.log(data2); }) .fail(function (data2) { console.log(data2); }); event.preventDefault(); //FUNCTION 3 var formData3 = { 'tahun': $('input[name=tahun]').val(), 'jurusan': $('input[name=jurusan]').val(), 'posisi': $('input[name=posisi3]').val(), 'tabel': $('input[name=tabel]').val() }; $.ajax({ type: 'POST', url: 'operator_pt/unggah/', data: formData3, Async:false, dataType: 'json', encode: true }) .done(function (data3) { console.log(data3); }) .fail(function (data3) { console.log(data3); }); event.preventDefault(); // FUNCTION 4 var formData4 = { 'tahun': $('input[name=tahun]').val(), 'jurusan': $('input[name=jurusan]').val(), 'posisi': $('input[name=posisi4]').val(), 'tabel': $('input[name=tabel]').val() }; $.ajax({ type: 'POST', url: 'operator_pt/unggah/', data: formData4, Async:false, dataType: 'json', encode: true }) .done(function (data4) { console.log(data4); }) .fail(function (data4) { console.log(data4); }); event.preventDefault(); }); });  

    你可以为每个ajax请求编写单独的函数,并从另一个成功函数中调用一个函数。

     function callAjax3(){ var formData3 = { 'tahun': $('input[name=tahun]').val(), 'jurusan': $('input[name=jurusan]').val(), 'posisi': $('input[name=posisi3]').val(), 'tabel': $('input[name=tabel]').val() }; $.ajax({ type: 'POST', url: 'operator_pt/unggah/', data: formData3, dataType: 'json', encode: true }) .done(function (data3) { console.log(data3); callAjax4() // calling 4th function }) .fail(function (data3) { console.log(data3); }); } function callAjax2(){ //FUNCTION 2 var formData2 = { 'tahun': $('input[name=tahun]').val(), 'jurusan': $('input[name=jurusan]').val(), 'posisi': $('input[name=posisi2]').val(), 'tabel': $('input[name=tabel]').val() }; $.ajax({ type: 'POST', url: 'operator_pt/unggah/', data: formData2, dataType: 'json', encode: true }) .done(function (data2) { console.log(data2); callAjax3(); // calling 3rd function }) .fail(function (data2) { console.log(data2); }); } 

    您可以将每个ajax调用嵌套在前一个的done()函数中。 这样,第n + 1次呼叫将仅在第n次呼叫完成(成功)后发生。

    例如

     $.ajax({data}).done(function() { $.ajax({data}).done(function() {...}) }) 

    你的.done(在请求成功完成后调用回调。

    .done(发出第二个请求.done(第一个回调,第三个请求 – 第二个请求的.done(回调等)

    这将确保正确的通话顺序。

    ……这就是他们所说的金字塔的厄运

    如果我已正确理解您的查询,那么您正在寻找一种方法在单个提交按钮单击上提交2个表单。

    您可以通过在第一个表单的ajax调用成功使用jquery .submit()方法手动提交第二个表单来实现此目的。

    如果您需要更新代码,请告诉我。

      以上就是jQuery教程分享如何使用一个提交按钮一个接一个地发布ajax?相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/547665.html

      (0)
      上一篇 2021年1月13日
      下一篇 2021年1月13日

      精彩推荐