![](/img/trans.png)
[英]Why is my Jquery Ajax call not working?(Asp.net MVC C#)
[英]Why is this value zero after ajax call finishes (asp.net mvc 3 and jQuery)?
這是我的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腳本后,totalCount總是為0? 為什么會這樣? 我該怎么辦? 我想在ASP.NET MVC 3中指定totalCount為Html.TextBoxFor,這就是我需要totalCount的原因。 請幫忙。
當您在“TotalCost”文本框中設置值時,ajax調用是異步的並且尚未完成。
你應該有這樣的成功函數處理程序來獲得正確的總成本值:
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
。
因為您的帖子是異步的,並且您正在嘗試設置頁面全局的js變量。 創建一個設置變量的函數並從回調中調用它,然后您將看到結果。
那是因為異步ajax請求。
處理事件時,請求尚未完成。
歡迎來到AJAX的美好世界。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.