【问题标题】:Multiple Ajax Calls多个 Ajax 调用
【发布时间】:2013-07-30 15:06:32
【问题描述】:

我有一个包含大约 300 个字段的关于员工属性的巨大表格。

当管理员想要编辑员工属性时,他们会转到编辑页面。此表单是从数据库中动态打印出来的。

用户从下拉列表中选择一个员工,我们称之为 dropdown1。然后使用绑定到 dropdown1 的更改事件的 jquery ajax 调用从 JSON 数组填充表单。这样可以正确填充 299 个字段。

但是,表单还包含 2 个下拉菜单。我们称它们为 dropdown2 和 dropdown3。

Dropdown2 在从数据库加载页面时填充。

Dropdown3 与 dropdown2 相关。当 dropdown2 更改时, dropdown3 的列表使用不同的 onchange ajax 函数进行更改。最初,在页面加载 dropdown3 上只有一个列表“选择”。

我的问题是当 dropdown1 发生变化时,表单中的每个字段都被填充,除了 dropdown 3。

我想要的是,当使用 jquery ajax 调用在 dropdown2 中更改选择时,

  1. 应该根据 dropdown2 中的值填充 dropdown3 - 基本上包含 dropdown2 的 div 的 html 应该改变(另一个 ajax 调用中的 ajax 调用?)

  2. 应该在 dropdown2 中选择正确的值(如果 1 有效,我想我可以处理这部分)

如果我的问题很长并且我无法正确解释,我深表歉意。

    $(document).ready(function(){
    $("#adminobj0zb").delegate("#sel10", "change", function(e){
        $.getJSON("editempajax2.php?empid=" + $("#sel10").val(),
        function(data){
            $.each(data, function(i, item){
                if(item.field == "fname"){
                    $("#sel2").val(item.value);
                    //Here Make Second Ajax call and change content of div containing sel3 ... how ?
                }
                if(item.field == "mname"){
                    $("#sel3").val(item.value);
                }
            });
        });
    });
});

【问题讨论】:

  • 你能分享你当前的代码吗? “应该根据 dropdown2 中的值填充 dropdown2”是什么意思?
  • 这没有意义,你为什么还要告诉我们下拉1和3。除非这句话是一个错字“下拉2应该根据下拉2中的值填充”
  • An ajax call inside another ajax call ? Ajaxception!?
  • 最佳解决方案可能是更改您的 ajax 请求,该请求返回 ~300 个字段,同时返回数据和第三个下拉列表的选定选项。
  • @azizpunjani - 他有一个错字。他希望 dropdown3 在第一次 ajax 调用后根据 dropdown2 数据自动填充。

标签: jquery ajax


【解决方案1】:

这是可能的。您可以将 AJAX 调用作为第一次调用的回调。

$.ajax({
    url:"/echo/json/",
    data:xdata,
    type:"POST",
    success: function(data) {
        $.ajax({
            // config
            success: function(data2) {}; // do your stuff
        });
    }
});

如果您同时需要多个 AJAX 调用,您可以使用延迟对象:jQuery Deferred - getting result of chained ajax calls

【讨论】:

  • 谢谢 Zim84!就 jquery 和 ajax 而言,我的知识非常有限。我将编辑我的问题并显示我正在使用的代码。请几分钟:)
  • 无论如何他都应该使用延迟对象——它们避免了深度嵌套的回调地狱。
猜你喜欢
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 2015-04-02
  • 2013-06-17
  • 2018-03-22
相关资源
最近更新 更多