繁体   English   中英

确定ajax调用完成以运行另一个ajax调用

[英]Determine ajax call finished to run another ajax call

在我的项目中,我有一些选择选项组,它们根据先前的值加载ajax数据。 现在,当我尝试将它们复制到另一个选择选项组时遇到问题。

这是场景

parmanet address              Present Address
Division                      Division    
District                      District
Upzilla                       Upzilla
Union                         Union  

所有这些都是选择字段,在选择每个字段之后,下一个由ajax加载的选择选项。 我放置了一个复选框,当用户单击该复选框时,永久地址数据应复制到具有所有ajax调用的当前地址。

现在的问题是,jQuery“ val”函数无法运行,因为它在从ajax加载数据之前运行。 如果我将延迟设置为100毫秒,则可以正常工作,但这不是正确的方法。 有没有更好的方法来解决这个问题?

这是我更改除法以将ajax数据加载至除法器时的代码,其他选项与此相同。

$('#divisions').change(function() {
    $("#villtable").hide();
    $("#villaddform").hide();
    $.ajax({
      type: 'post',
      url: 'GetDistricts',
      data: {
        get_option:this.value
      },
      success: function(response) {
        document.getElementById("districts").innerHTML=response;
      }
    });
  });

这就是我试图将数据复制到当前地址组的内容...

$.when( $('.division-prese').val(divi).trigger('change').delay( 100 ) ).then(function() {
    $.when( $('.district-prese').val(dist).trigger('change').delay( 100 ) ).then(function() {
        $.when( $('.upazilla-prese').val(upaz).trigger('change').delay( 100 ) ).then(function() {
                        $('.union-prese').val(unio).trigger('change');
        });   
    });
});

我也尝试过“完成”,但仍然无法正常工作。

提取逻辑并在两个地方使用它的一般思想,其中之一执行承诺链。

 function loadDistricts ($divisions) { return $.ajax({ type: 'post', url: 'GetDistricts', data: { get_option: $divisions.val() }, success: function(response) { $('#districts').html(response); } }); } //... other methods var $divisions = $('#divisions'); var $districts = $('#districts'); var $upazillas = $('#upazillas'); $divisions.change(function() { $("#villtable").hide(); $("#villaddform").hide(); loadDistricts($divisions); }); //... other change methods $('.division-prese').val(divi); loadDistricts($divisions).then(function(){ $('.district-prese').val(dist); loadUpazillas($upazillas).then(function(){ $('.upazilla-prese').val(upaz); //call next thing }); }); 

尝试在通话前添加收益

$('#divisions').change(function() {
    $("#villtable").hide();
    $("#villaddform").hide();
      return $.ajax({
      type: 'post',
      url: 'GetDistricts',
      data: {
        get_option:this.value
      },
      success: function(response) {
        document.getElementById("districts").innerHTML=response;
      }
    });
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM