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

标签 javascript php jquery ajax function

在我的项目中,我有一些选择选项组,它们根据先前的值加载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');
        });   
    });
});

我也尝试过“完成”,但仍然不起作用。

最佳答案

提取逻辑并在两个地方使用它的总体思路,其中之一执行 promise 链。

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
	});
});

关于javascript - 确定 ajax 调用已完成以运行另一个 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48794615/

相关文章:

php - Neo4j - Graphaware reco4php - 命名空间问题

php - 通过 ANT 获取和使用父目录

javascript - 在 Bootstrap 模式中提交表单

javascript - Chartjs 只显示第一个和最后一个 x 轴标签

javascript - Bootstrap Ajax Modal - 显示正文和页脚的问题

php - 将 Ck 编辑器放入 innerHTML 以用 Ckeditor 文本区域替换 div 后无法工作

jquery - 我正在尝试从帖子中获取数组的值

javascript - iPhone safari Web 应用程序 float div

php - 最高效的 MySQL 查询?

javascript - Backbone View 事件在父 View 重新渲染时失去委托(delegate)