我有一个cshtml页面,它调用一个控制器方法,并通过表单提交上的jquery调用将数据传递给该方法,如下所示:
$('form').submit(function () {
//create instance for datePicker.
// only after control creation we can get dateObj otherwise it throws exception.
var dateObj = $("#datepick").ejDatePicker('instance');
var obj = dateObj.option('value')
//$.datepicker.formatDate('dd/MM/yyyy', new Date());
var d = new Date(2011, 10, 30);
alert(obj);
alert(d);
$.ajax({
url: '/AutoComplete/AutocompleteFeaturesNew',
data: {
RequestedUntilDate: obj.toISOString(),
RoomNo: '13a'
},
type: 'POST',
success: function (data) {
alert("key is suucessfully got in controller through form submit, Key:" + data);
}
});
});
控制器方法本身如下:
[HttpPost]
public JsonResult AutocompleteFeaturesNew (RequestCreateViewModel createRequestViewModel)
{
return Json(createRequestViewModel.RequestedUntilDate);
}
我希望能够做的是,一旦提交表单,就将控件重定向到a)另一页b)成功提交表单的另一种控制器方法。
所以,比如:
return RedirectToAction("Index");
但是在客户端。
有什么建议吗?
答案 0 :(得分:0)
您只能通过将以下行添加到ajax成功函数体中,从javascript执行此操作:
window.location.replace("http://...");
答案 1 :(得分:0)
感谢您的所有回复。
我需要做的是确保$('form').submit(function () {
返回false。
所以:
//将onClick动作绑定到按钮下方 $('form')。submit(function(){
//create instance for datePicker.
// only after control creation we can get dateObj otherwise it throws exception.
var dateObj = $("#datepick").ejDatePicker('instance');
var obj = dateObj.option('value')
//$.datepicker.formatDate('dd/MM/yyyy', new Date());
var d = new Date(2011, 10, 30);
alert(obj);
alert(d);
$.ajax({
url: '/AutoComplete/AutocompleteFeaturesNew',
data: {
RequestedUntilDate: obj.toISOString(),
RoomNo: '13a'
},
type: 'POST',
dataType: 'json',
success: function () {
window.location.replace("http://stackoverflow.com/questions/41719249/client-side-redirect-on-form-submission?noredirect=1#comment70633597_41719249");
}
});
return false;
});
再次感谢,
肖恩