Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax调用后从控制器重定向(包括参数)_Javascript_Ajax_Asp.net Mvc 4 - Fatal编程技术网

Javascript Ajax调用后从控制器重定向(包括参数)

Javascript Ajax调用后从控制器重定向(包括参数),javascript,ajax,asp.net-mvc-4,Javascript,Ajax,Asp.net Mvc 4,因此,我有一个小问题,我想知道是否有可能通过以下方式解决它,我知道有其他方法解决这个问题,但我想知道是否有可能像这样解决它: 我有一个ajax调用,一个GET。在这个ajax调用中,我只想根据用户输入(通过javascript)传递一些参数,并让控制器操作处理其余的参数。问题是,在ajax中,success函数处理操作完成后发生的任何事情 我的操作有一个重定向(ActionResult返回一个带有一些参数的视图),我想让控制器在这里重定向我,但是ajax使用了Success函数 如何将完整路径(

因此,我有一个小问题,我想知道是否有可能通过以下方式解决它,我知道有其他方法解决这个问题,但我想知道是否有可能像这样解决它:

我有一个ajax调用,一个GET。在这个ajax调用中,我只想根据用户输入(通过javascript)传递一些参数,并让控制器操作处理其余的参数。问题是,在ajax中,success函数处理操作完成后发生的任何事情

我的操作有一个重定向(ActionResult返回一个带有一些参数的视图),我想让控制器在这里重定向我,但是ajax使用了Success函数

如何将完整路径(由于它基于用户输入,因此可能会发生更改)传递到success函数以重定向

谢谢大家!

 public string Edit(string stringEventID)
    {
        Guid eventID = new Guid(stringEventID);

        if (eventID == Guid.Empty || eventID == null)
        {
            return Url.Action("Edit", "MyController", new { area = "MyArea", id = new Event() });
        }

        else
        {
            Event _event = _iEMARepository.Events.Where(p => p.EventID == eventID).SingleOrDefault();

            return Url.Action("Edit", "MyController", new { area = "MyArea", id = _event })
        }
    }

使用Url帮助器为MVC和路由正确构建Url。然后返回带有URL的
Jsonresult
(您可能需要设置AllowGet):


我的问题不在于请求是否成功,我希望控制器重定向,不管怎样。但是url将不同,它将取决于用户输入。我如何返回完整路径并通过window.location.href重定向,然后返回字符串肯定会奏效。我只是想知道javascript是如何处理URL的,因为我知道它与MVC处理URL的方式不同。我只是想知道在这种情况下,我是否可以“跳过”成功函数,或者根本不使用ajax(我相信最后一个方法不会行得通,因为我基于用户输入重定向,因此需要将参数发送到控制器)正确,为了构造URL,您肯定需要调用服务器。您需要实际使用success函数,因为如果服务器上出现错误或ajax调用出现问题,您可能不想重定向。对了,如果这看起来是一个愚蠢的问题,我很抱歉,但是我是否必须从头开始构造字符串?和StringBuilder一样,我可以在末尾添加一个{0}(参数)?是的,我相信这就是您想要做的。ajax调用返回URL的一个操作和该URL将调用的另一个操作。
string url = Url.Action(your arguments here);

return new JsonResult()
{
    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
    Data = new Dictionary<string,string>() { { "url", url } }
};
success: function (data) {
    window.location.href = JSON.parse(data)['url'];
}