表单提交时客户端重定向

时间:2017-01-18 12:19:33

标签: javascript c# jquery ajax redirect

我有一个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");

但是在客户端。

有什么建议吗?

2 个答案:

答案 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;
    });

再次感谢,

肖恩