我写了这个脚本FUNCTION来检查小额现金是否已经使用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调用编写了这个Controller:
[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脚本中的函数总是返回undefined ... 关于如何解决这个问题的任何建议?
我试过测试一下:
alert(data["CashSetAmount"]);
//the Result: 1000
alert(data["CashSetIn"]);
//the Result: true
alert(data);
//the Result: [object Object]
答案 0 :(得分:1)
$.ajax
不等待AJAX请求返回。它改为启动请求并继续。如果您将功能更改为
function GetPettyCash() {
$.ajax( //...
);
return true;
}
总会返回true
。您指定的返回值是您使用function
关键字定义的匿名回调函数的返回值。
您需要使用回调函数来通知您的页面传入的数据。您不希望编写导致整个页面等待收到响应的函数。
例如,您可以执行以下操作:
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)
// ...
}