2010-07-04 47 views
1

我试图从一个视图中的表更改值,然后使用Flash的FSCommand和JSON,使用下面的代码重定向到另一个观点:JSON RedirecttoAction

 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"); 
    } 

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

回答

2

您需要执行AJAX成功回调内部的重新定位:你在呼唤与AJAX这个动作

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

重定向不能执行服务器端。

此外,您还在您的AJAX调用中指出您期待服务器端的JSON,但您发送的是不一致的重定向。你可以修改控制器动作只返回客户端需要重定向到使用JSON的网址:

[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'); 
+0

谢谢你这么多达林,也得益于此开发商网站;它工作得很好,只是IE的小问题,我得到这个错误Windows数据执行保护检测到一个附加组件,试图错误地使用系统内存。这可能是由故障或恶意插件引起的。也许是因为我在本地服务器上运行应用程序。再次感谢 – hncl 2010-07-04 19:45:16