0
我有這個jQuery:重定向不應該發生
$('#SaveButton').click(function() {
var url = $('#SaveButton').data("url");
var overview = $('#SaveButton').data("overview");
var createurl = $('#SaveButton').data("createurl");
var flag = true;
var picker = $('#DepositDatePicker').data('datetimepicker');
var utcDate = getFormattedDate(picker.getLocalDate());
if (flag) {
$.ajax({
url: url,
type: 'POST',
data: {
DepositTemplateVersionId: $('input#DepositTemplateVersionId').val(),
depositDate: $('#depositDateValue').val()
},
dataType: 'html',
success: function (result) { document.location = overview; },
error: function (x, t, e) { document.localName = createurl; }
});
}
return false;
});
這是我的控制器上會發生什麼:
public ActionResult SaveDeposit(DepositCreateScreenDTO depositCreateScreenDTO) //int depositTemplateVersionId, DateTime depositDate)
{
try
{
if (this.ModelState.IsValid)
{
CommandsServiceAgent.Call(c => c.CreateDeposit(depositCreateScreenDTO.DepositTemplateVersionId, depositCreateScreenDTO.DepositDate));
this.Success("Successfully created deposit");
return null;
}
else
{
string Message = "";
var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors);
foreach (ModelError modelError in modelStateErrors)
{
Message += modelError.ErrorMessage + System.Environment.NewLine;
}
Danger(Message);
return null;
}
}
catch (FaultException<FaultDTO> ex)
{
Danger(string.Format (ex.Message));
return Json(new { Message = ex.Message });
}
catch (Exception)
{
Danger("Error creating deposit");
return null;
}
}
當一切準備好了,我的網頁被重定向罰款。 發生錯誤並且我的模型無效時,它應該保持在同一頁面上。 出於某種原因,我將重定向到我的概述頁面。
jQuery沒有錯誤,因爲ajax調用工作正常。 – DavidG 2014-09-05 07:32:44
返回'null'不會導致ajax函數失敗。你應該在成功函數中測試結果 - 「if(result){do something} else {null被返回,所以做別的事情}' – 2014-09-05 07:35:42
對於action方法,最好是返回類型爲'JsonResult'而不是'ActionResult'通過Ajax調用。所以你可以直接返回字符串並驗證$ .ajax方法的成功/失敗函數。 – 2014-09-05 08:40:00