2010-07-04 50 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