.NET在第一次成功后进行第二次ajax调用

时间:2015-04-03 08:12:34

标签: javascript ajax asp.net-mvc

我有2个ajax调用转到2个独立的控制器方法,一个用于创建一个平面布置对象并将其保存到数据库,另一个用于发送任何计划对象(椅子,桌子等)的数组到同一个数据库。

我在第一次调用成功时有第二个ajax调用,但它似乎最初没有出现。我已经设置了断点来检查数据,并且平面图肯定会添加有效数据。如果我尝试创建另一个,那么它就适用了,所以我不确定它是否是数据库问题或者我的JavaScript是错误的。

这是我的JavaScript保存功能的ajax调用

$.ajax({
    url: "/Floorplans/Create",
    type: "POST",
    contentType: "application/json",
    data: JSON.stringify($floorplan),
    success: function () {
        $.ajax({
            url: "/planObjects/Create",
            type: "POST",
            contentType: "application/json",
            data: JSON.stringify($objArray)
            //objArray is an array of planObjects
        });

}
});

我的平面图控制器:

[HttpPost]
//Floorplan controller
    public ActionResult Create(Floorplan floorplan)
    {

            if (ModelState.IsValid){
                db.Floorplans.Add(floorplan);
                db.SaveChanges();
                return Json(new {success = true});
            }
            else{
                return Json(new {success = false});
            }



    }

planObjects控制器:

[HttpPost]
    public void Create(List<planObject> newObjects)
    {
        var model = new planObject();
        if (ModelState.IsValid)
        {
            newObjects.ForEach(r => db.planObjects.Add(r));
            db.SaveChanges();
        }
    }

使用此代码,第一次ajax调用成功时的ajax调用不会在第一次尝试时执行,但如果我再制作另一个平面图则它可以正常工作。你们能看到解决问题的方法吗?我试图使用单个控制器操作方法,但我无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

稍微修改了你的代码(我可以让它在本地工作)。我怀疑它可能是第二次调用中的“数据”元素导致麻烦。我会逐步检查进度并从那里开始。

如果您添加一些警告或日志消息,如下所示,您看到了什么?

<script>
    $.ajax({
        url: '@Url.Action("Create", "FloorPlans")',
        type: "POST",
        contentType: "application/json",
        data: JSON.stringify($floorplan),
        success: function(result) {
            if (result.success) {
                Log("Floor plan created successfully, adding plan objects...");
                $.ajax({
                    url: '@Url.Action("Create", "PlanObjects")',
                    type: "POST",
                    contentType: "application/json",
                    data: JSON.stringify($objArray),
                    //objArray is an array of planObjects
                    success: function(result2) {
                        if (result2.success) {
                            Log("Plan objects created successfully");
                        } else {
                            Log("Failed to create plan objects");
                        }
                    }
                });
            } else {
                Log("Failed to add floor plan");
            }
        }
    });

    function Log(data) {
        //alert(data);
        console.log(data);
    }
</script>