Javascript 使用AJAX从函数返回值
我编写这个脚本函数是为了检查小额现金是否已经使用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) {
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模式对话框,指示“请等待…”推荐?如果完成,我将使用回调关闭模式。我想这取决于上下文,但我会尽量避免。一般来说,我认为用户希望所有事情都在后台悄无声息地发生,但如果您单击用户可能期望立即发生的某件事,则也可以给出某种状态消息仅在页面上,或作为模式对话框。