簡體   English   中英

在jQuery Ajax函數中返回響應

[英]Returning Response in jquery ajax function

根據checkusers()函數返回的結果,在Response.d中遇到問題,我正在保存這些值。 如果輸入的名稱已存在於數據庫中,則應顯示“用戶已存在”;如果輸入的名稱不在數據庫中,則應創建一個新記錄。

但是我沒有從(response)得到正確的值,我觀察到Console.log(response.d)給了我正確的值,例如'true'或'false'。 我嘗試了所有我知道的東西-

  1. 更改異步:“ false”
  2. var jqXHR = $.ajax({並返回jqXHR.responseText

但是他們都沒有為我工作。 請幫我解決一下這個。

submitHandler: function (form) {

        var txtName = $("#txtName").val();
        var txtEmail = $("#txtEmail").val();
        var txtSurName = $("#txtSurName").val();
        var txtMobile = $("#txtMobile").val();
        var txtAddress = $("#txtAddress").val();

        var obj = CheckUser();
        if (obj == false) {
            $.ajax({
                type: "POST",
                url: location.pathname + "/saveData",
                data: "{Name:'" + txtName + "',SurName:'" + txtSurName + "',Email:'" + txtEmail + "',Mobile:'" + txtMobile + "',Address:'" + txtAddress + "'}",
                contentType: "application/json; charset=utf-8",
                datatype: "jsondata",
                async: "true",
                success: function (response) {

                    $(".errMsg ul").remove();
                    var myObject = eval('(' + response.d + ')');
                    if (myObject > 0) {
                        bindData();
                        $(".errMsg").append("<ul><li>Data saved successfully</li></ul>");
                    }
                    else {
                        $(".errMsg").append("<ul><li>Opppps something went wrong.</li></ul>");
                    }
                    $(".errMsg").show("slow");
                    clear();

                },
                error: function (response) {
                    alert(response.status + ' ' + response.statusText);
                }


            });
        }
        else {

            $(".errMsg").append("<ul><li>User Already Exists </li></ul>");
            $(".errMsg").show("slow");

        }

    }

});

$("#btnSave").click(function () {
    $("#form1").submit()

});
});

checkusers函數是:

function CheckUser() {

  var EmpName = $("#txtName").val();

    $.ajax({

    type: "POST",
    url: location.pathname + "/UserExist",
    data: "{Name:'" + EmpName + "'}",
    contentType: "application/json; charset=utf-8",
    datatype: "jsondata",
    async: "true",
    success: function (response) {
        console.log(response.d);

    },
    error: function (response) {
        alert(response.status + ' ' + response.statusText);


    }



});
}

僅僅因為您的數據庫返回true或false並不意味着您的CheckUser()也會返回此值。

這里有幾個選項:

  1. 您可以在CheckUser中創建一個局部變量,使Ajax調用同步,在成功函數中將該局部變量設置為response.d,然后返回該局部變量。

  2. 另一種選擇是使用Deferred對象,並使您的Submithandler Ajax調用等待Checkuser Ajax調用返回。

  3. 第三種選擇是,如果尚未創建用戶,則從CheckUser Ajax調用中的成功回調中調用您的create ajax調用。

我建議選擇選項2或3,因為選項1不是用戶友好的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM