我可以在$ .getJson()中调用$ .ajax方法吗?

时间:2016-08-01 13:06:32

标签: jquery asp.net-mvc asp.net-ajax getjson

我想将值插入数据库并使用$ .getJson()方法我检查我的值是否存在于数据库中,如果不是,我想调用$ .ajax将其放入数据库中我尝试这样做并弹出模态对话框但方法继续执行,我的应用程序每次都打破了模式对话框弹出后如何防止执行我尝试将$ .ajax放在其他块中但没有什么然后我尝试这样但没什么?

enter $("#btnSave").click(function (e) {
    e.preventDefault();

    var form = $(this).closest("#forma1");

    $.ajax({
        type: "POST",
        url: form.attr("Create"),

        data:   $.getJSON("/InspekcijskeKontrole/Check?id1=" + $("#kombo3").val() + "&id2=" + $("#kombo4").val(), function (data) {

            if (data.InspekcijskoTijeloId != -1 && data.ProizvodId != -1) {
                $.getJSON("/Proizvodi/VratiIme/" + data.ProizvodId, function (ime) {

                    if (ime != null) {
                        $("#modalni1 p").text("Inspekcijska kontrola za " + ime + " je vec izvrsena");
                        $("#modalni1").modal({ backdrop: "static" });

                    }
                });

            } 

        }),
        data:form.serialize(),

        success: function (response) {

         alert("Informacije su uspjesno ubacene");
         window.location.href = "/InspekcijskeKontrole/Index";


        },
        error: function (greska) {
            alert("Doslo je do greske pri ubacivanju");
        }

    });

});code here

2 个答案:

答案 0 :(得分:1)

这不起作用,因为在帖子已经完成之后,两个内部“Check”和“VratiMe”ajax调用完成了

因为它们是异步的(即排队并立即返回,然后在以后完成)。

您应该可以将通话顺序更改为:

var form = $(this).closest("#forma1");

$.getJSON("/InspekcijskeKontrole/Check?id1=" + $("#kombo3").val() + "&id2=" + $("#kombo4").val(), function (data) {

    if (data.InspekcijskoTijeloId != -1 && data.ProizvodId != -1) {
        $.getJSON("/Proizvodi/VratiIme/" + data.ProizvodId, function (ime) {

            if (ime != null) {
                $("#modalni1 p").text("Inspekcijska kontrola za " + ime + " je vec izvrsena");
                $("#modalni1").modal({ backdrop: "static" });
            }
        });
    }
    else {

        $.ajax({
            type: "POST",
            url: form.attr("Create"),

            data:form.serialize(),

            success: function (response) {

             alert("Informacije su uspjesno ubacene");
             window.location.href = "/InspekcijskeKontrole/Index";


            },
            error: function (greska) {
                alert("Doslo je do greske pri ubacivanju");
            }

        });
    } 
});

答案 1 :(得分:1)

为什么不在一个请求中进行检查和插入?我强烈希望在一个请求中做到这一点!

但是没关系,这不是问题。要在$.getJSON中使用$.ajax的结果,请将其置于$.getJSON的成功回调中。像这样:

$.getJSON("getJsonUrl.html", function(responseOne) {
    $.getJSON("anotherJsonRequest.html", function(responseTwo) {
        $.ajax({
            url: "ajaxUrl.html",
            type: "POST",
            data = responseTwo
        });
    });
});