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

Can I call $.ajax method inside $.getJson()?

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

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

这不起作用,因为两个内部 "Check" 和 "VratiMe" ajax 调用完成 after post 有已经完成。

因为它们是异步的(即立即排队并 return 然后在稍后完成)。

您应该可以将调用顺序更改为:

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

        });
    } 
});

为什么不在一个请求中进行检查和可能的插入?我强烈希望一次请求完成!

但是好吧,这不是问题所在。要在 $.ajax 中使用 $.getJSON 的结果,请将其放在 $.getJSON 的成功回调中。像这样:

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