这是我的ajax电话:
var totalCost = 0;
function GetTotalCost(start, end, rID)
{
$.ajax({
url: '@Url.Action("CalculateTotalcost")',
type: 'POST',
data: JSON.stringify({ start:start, end:end, rID:rID}),
dataType: 'json',
processdata: false,
contentType: 'application/json; charset=utf-8',
success: function (data) { totalCost = data; }
// error: function (xhr, ajaxOptions, thrownError) { $('.datepicker1').datepicker("hide"); },
// complete: function (x, y) { $('.datepicker1').datepicker("refresh"); }
});
}
这是我的函数,我称之为ajax:
$('.datepicker2').datepicker({
dateFormat: 'dd/mm/yy',
firstDay: 1,
yearRange: '2012:2100',
beforeShowDay: function (date) {
var day = date.getDate();
if (day in alreadyTakenDays) {
return [false, '', alreadyTakenDays[day]];
}
else return [true, 'IsActive'];
},
onChangeMonthYear: function (year, month, inst) {
alreadyTakenDays = {};
getEvents(month, year);
},
onSelect: function (dateText, inst) {
var end = dateText.substring(0, 2);
console.log(end);
var rID = $('#RoomID').val();
console.log(rID);
var startingHole = $('#DateOne').val();
var start = startingHole.substring(0, 2);
console.log(start);
GetTotalCost(start, end, rID);
document.getElementById('TotalCost').value = totalCost.toFixed(2);
}
});
执行jQuery脚本后,总是得到 0表示totalCount? 为什么会这样?我该怎么办? 我想在ASP.NET MVC 3中指定totalCount为Html.TextBoxFor,这就是我需要totalCount的原因。请帮忙。
答案 0 :(得分:3)
当您在“总费用”文本框中设置值时,ajax调用是异步的并且尚未完成。
答案 1 :(得分:2)
你应该有这样的成功函数处理程序来获得正确的总成本值:
function GetTotalCost(start, end, rID)
{
$.ajax({
url: '@Url.Action("CalculateTotalcost")',
type: 'POST',
data: JSON.stringify({ start:start, end:end, rID:rID}),
dataType: 'json',
processdata: false,
contentType: 'application/json; charset=utf-8',
success: function (data) { totalCost = data;
document.getElementById('TotalCost').value = totalCost.toFixed(2);
}
});
}
在这样的代码中:
GetTotalCost(start, end, rID);
document.getElementById('TotalCost').value = totalCost.toFixed(2);
第一行引起ajax调用,但它不等待响应,第二行立即执行。之后,在服务器响应后,执行success
回调函数。它将在第二行之后执行。这就是您的总值错误的原因 - 更新TotalCost输入后,正确的值设置为totalCost
。
答案 2 :(得分:1)
因为你的帖子是异步的,你试图设置一个页面全局的js变量。创建一个设置变量并从回调中调用它的函数,然后您将看到结果。
答案 3 :(得分:1)
这是因为异步ajax 请求..
当您处理事件时,请求尚未完成。
欢迎来到AJAX的精彩世界。