Javascript MVC4:如何传递嵌套的Ajax请求?

Javascript MVC4:如何传递嵌套的Ajax请求?,javascript,jquery,ajax,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 4,我在一个web应用程序中生成表单,使用ajax根据用户选择过滤数据,使用jason获取数据,这些都很好,但当我想要获取嵌套数据时,问题就出现了 我从表BankPlans值中获取,对于每个bankid,我从其他表中获取所有必需的文档,我尝试在jason中的一种方法中获取它们以供选择 new { Percent = r.percent, Reqdocs = docs }); 在每个reqDosc的ajax循环结果中,将它们放入列表 当在控制器中执行方法时,比如case1=operation和cas

我在一个web应用程序中生成表单,使用ajax根据用户选择过滤数据,使用jason获取数据,这些都很好,但当我想要获取嵌套数据时,问题就出现了 我从表BankPlans值中获取,对于每个bankid,我从其他表中获取所有必需的文档,我尝试在jason中的一种方法中获取它们以供选择

new { Percent = r.percent, Reqdocs = docs });
在每个reqDosc的ajax循环结果中,将它们放入列表
  • 当在控制器中执行方法时,比如case1=operation和case2=operation,我得到一个错误 然后,我尝试另一种解决方案,通过两种方法传递它们:一种是获取百分比和id,然后将它们传递给第一个ajax,然后为每个id获取所需的文档 第一种方法执行得很好,但第二种方法得到最后一个id的文档,并将它们放在所有计划中,当我在下一种方法中做一个临界点时,它实际上会传入参数三个值,并且只执行一个。我认为它们之间需要异步,但我无法这样做,或者如果有其他解决问题的解决方案的话

    阿贾克斯:

                            var addressData = JSON.stringify(jsonData);
                            $.ajax({
                                url: '/Getyourcar/GetPlans',
                                type: "POST",
                                dataType: "json",
                                contentType: "application/json; charset=utf-8",
                                data: addressData,
                                success: function (result) {
    
                                    $("#carousel").empty();
    
                                    for (i = 0; i < result.length; i++) {
                                        $("#carousel").append("<div class='carousel-feature'><div class='content'><h3>الفائدة السنوية</h3><div class='rate'> " + result[i].percent + " </div><div class='feature_cnt'> <ul></ul> </div> <a href='javascript:void(0)' class='check' title=" + result[i].percent + ">اختر</a></div><img class='carousel-image' alt='Image Caption' src='/images/1px.png'></div>");
                                        $('input[name="planid"]').val(result[i].planid);
                                        getDocs();
                                    }
                                },
                                error: function (result) {
                                }
                            });
    
    
                        }
    
    
                        var getDocs = function () {
                            var jsonData = {
    
                                "Planid": $("#planid").val(),
    
                            };
    
                            var addressData = JSON.stringify(jsonData);
                            $.ajax({
                                url: '/Getyourcar/Getdocs',
                                type: "POST",
                                dataType: "json",
                                contentType: "application/json; charset=utf-8",
                                data: addressData,
                                success: function (result) {
                                    $("#carousel .feature_cnt ul").empty();
    
                                    for (i = 0; i < result.length; i++) {
                                        $("#carousel .feature_cnt ul").append("<li>" + result[i].plan + " </li>");
                                    }
    
                                },
                                error: function (result) {
                                    alert("failed");
                                }
                            });
    
    在VS中使用调试时,如果Getdocs方法在第一次调用两次,则按F10时参数中的Planid将获得值。使用下一个值再次调用同一行,并返回最后一个值的值


    请提供帮助,提前感谢。

    通过将所有文档作为字符串传递(以(,)和列表中的所有ID分隔)来解决此问题

    • 在java脚本中拆分(“,”),并将它们插入指定的ul id中

    一些标点符号或句点如何?我不理解你对标点符号或句点的理解。你的意思是为每个循环定义周期还是什么?
      public ActionResult GetPlans(string BankName = "", string Period = "", string customergrade = "")
        {
            int bankid = db.Banks.Where(b => b.Name.Contains(BankName) || BankName == "").FirstOrDefault().Id;
            int yearid = db.Yearss.Where(b => b.Name.Contains(Period) || Period == "").FirstOrDefault().Id;
    
            int cusgradeid = db.CustomerGrades.Where(c => c.Name.Contains(customergrade) || customergrade == "").FirstOrDefault().Id;
            var Bankplanid = db.BankPlanss.Where(b => (b.BankId == bankid) &&
                                                      (b.CustomerGradeId == cusgradeid))
               .Select(r => new { cusgrade = cusgradeid, bankid = r.BankId, percent = r.Percent, planid = r.Id });
            return Json(Bankplanid, JsonRequestBehavior.AllowGet);
        }
        public ActionResult Getdocs(int Planid = 0)
        {
            var plans = db.BankPlansReqDocs.Where(b => b.BankPlansId == Planid)
                .Select(r => new { plan = r.RequiredDocs.Name });
            return Json(plans, JsonRequestBehavior.AllowGet);
        }