代码之家  ›  专栏  ›  技术社区  ›  hncl

JSON重定向到操作

  •  1
  • hncl  · 技术社区  · 14 年前

    我尝试从一个视图更改表中的值,然后使用flash fscommand和json,使用以下代码重定向到另一个视图:

            if (command == "nameClip") {
                var url = '<%= Url.Action("Index", "Home") %>';
                var clip = [args];
                try {
                    $.post(url, { MovieName: clip }, function(data) {
                        ;
                    }, 'json');
                }
                finally {
                    // window.location.href = "/Demo/SWF";
                }
            }
    

    在控制器中:

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Index(SWF movietoplay)
        {
    
                var oldmovie = (from c in db.SWFs
                                where c.ID == "1"
                                select c).FirstOrDefault();
    
                var data = Request.Form["MovieName"].ToString();
                oldmovie.SWFName = data;
                db.SubmitChanges();
                return RedirectToAction("Show");
         }
    

    除了重定向,所有的工作都很好!!

    1 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    您需要在Ajax成功回调中执行重定向:

    $.post(url, { MovieName: clip }, function(data) {
        window.location.href = '/home/show';
    }, 'json');
    

    无法在服务器端执行重定向,因为您使用Ajax调用此操作。

    另外,您在Ajax调用中指出,您期望从服务器端得到JSON,但发送的重定向不一致。您可以修改controller操作以简单地返回客户机使用JSON重定向到的URL:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(SWF movietoplay)
    {
        ...
        return Json(new { redirectTo = Url.Action("show") });
    }
    

    然后:

    $.post(url, { MovieName: clip }, function(data) {
        window.location.href = data.redirectTo;
    }, 'json');