Javascript 使用AJAX从函数返回值

Javascript 使用AJAX从函数返回值,javascript,jquery,ajax,json,asp.net-mvc-4,Javascript,Jquery,Ajax,Json,Asp.net Mvc 4,我编写这个脚本函数是为了检查小额现金是否已经使用AJAX设置 function GetPettyCash() { $.ajax({ type: 'GET', url: '@Url.Action("CashSet", "POS")', contentType: 'application/json; charset=utf-8', success: function (data) {

我编写这个脚本函数是为了检查小额现金是否已经使用AJAX设置

function GetPettyCash() {
        $.ajax({
            type: 'GET',
            url: '@Url.Action("CashSet", "POS")',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                if (data["CashSetIn"] == "true") {
                    alert(data["CashSetAmount"]);
                    return true;
                }
                else {
                    alert(data["CashSetIn"]);
                    return false;
                }

            },
            error: function (req, status, errorObj) {
                alert(errorObj.toString());
                return false;
            }
        });
    }
我为我的Ajax调用编写了这个控制器:

[HttpGet]
    public JsonResult CashSet()
    {
        Login login = new Login();
        login.CheckPettyCash();
        if (login.CashInSet == true)
        {
            return Json(new
            {
                CashSetIn = "true",
                CashSetAmount = login.CashInAmount

            },JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(new
            {
                CashSetIn = "false",
                CashSetAmount = "0"
            }, JsonRequestBehavior.AllowGet);
        }
    }
我的控制器返回以下JSON:

{"CashSetIn":"true","CashSetAmount":1000}
但是我在JS脚本中的函数总是返回未定义的。。。 有没有关于如何解决这个问题的建议

我试着测试它:

alert(data["CashSetAmount"]);
//the Result: 1000

alert(data["CashSetIn"]);
//the Result: true

alert(data);
//the Result: [object Object]

$.ajax
不会等待ajax请求返回。而是启动请求并继续。如果您将函数更改为

function GetPettyCash() {
        $.ajax( //...
        );
        return true;
    }
它将始终返回
true
。指定的返回值是使用
函数
关键字定义的匿名回调函数的返回值

您需要使用回调函数来通知页面传入的数据。您不希望编写导致整个页面等待响应的函数

例如,您可以这样做:

function GetPettyCash() {
        $.ajax({
            type: 'GET',
            url: '@Url.Action("CashSet", "POS")',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                if (data["CashSetIn"] == "true") {
                    do_something_with_petty_cash(true);
                }
                else {
                    do_something_with_petty_cash(false);
                }

            },
            error: function (req, status, errorObj) {
                alert(errorObj.toString());
                return false;
            }
        });
    }
function do_something_with_petty_cash(petty_cash) {
       if (petty_cash)
           // ...
    }

success:function(data){
ans中执行
alert(data)
ans查看你得到了什么。你能分享吗?你得到了什么数据吗?是
login.CashInAmount
定义在
CashSetAmount=login.CashInAmount
?不…
login.CashInAmount
定义在
login.CheckPettyCash()中
;顺便问一下,我们一直在使用DLL库..是否可以等待类似AJAX的
$(AJAX).ready()
?正如我所说,您很可能不希望函数像那样等待,因为整个页面将等待函数返回。是一个Boostrap模式对话框,指示“请等待…”推荐?如果完成,我将使用回调关闭模式。我想这取决于上下文,但我会尽量避免。一般来说,我认为用户希望所有事情都在后台悄无声息地发生,但如果您单击用户可能期望立即发生的某件事,则也可以给出某种状态消息仅在页面上,或作为模式对话框。