2014-07-02 61 views
0

我想調用使用Ajax C#的動作,我的問題是如何將我試圖函數的研製成功後,我的行動,結果頁面重定向:使用Ajax調用POST操作(重定向問題)

$.ajax({ 
     type: 'Get', 
     url: "/OffreLocation/SearchOffer", 
     data: { 
      quartier: Quartier, 
      superficieMin: SuperficieMin, 
      superficieMax: SuperficieMax, 
      budgetMin: BudgetMin, 
      budgetMax: BudgetMax 
       },   
     success: function (response) { 
      window.location.href = "/Home/SearchResult"; 
     } 

    }); 

但它返回實際的視圖!

我的行動:

[HttpGet] 
    public ActionResult SearchOffer(int quartier, int superficieMin, int superficieMax, int budgetMin, int budgetMax) 
    { 


     List<OffreLocation> SearchedOffer = db.PublicationSet.OfType<OffreLocation>().Where(model => model.QuartierQuartier_Id == quartier && model.OffreLocation_Superficie > superficieMin && model.OffreLocation_Superficie < superficieMax).ToList(); 
     return RedirectToAction("SearchResult", "Home", SearchedOffer); 

    } 

任何幫助!

+5

如果你想重定向瀏覽器,爲什麼首先使用AJAX?當使用AJAX時,「重定向」需要在客戶機上進行,而不是在服務器上進行。看起來你正在做這兩件事。客戶是否不按預期重定向?是否調用了「成功」處理程序? – David

+0

所以如果重定向需要發生在客戶端,我只需要保持window.location.href =「/ Home/SearchResult」;在ajax方法中使用ActionResult保證的void action!但是如何在window.location.href =「/ Home/SearchResult」中傳遞從action方法返回的數據! – 404NotFound

+1

通常,當您需要將數據返回給客戶端時,您可以將它作爲JSON返回(在控制器中使用'return Json(someObject)')。因此,如果重定向需要在查詢字符串中包含信息,那麼您可以將該信息作爲JSON返回,並在'success'處理程序中從其構建查詢字符串。儘管如此,如果你正在執行重定向,那麼這裏就不需要AJAX了。只需將表單提交給'SearchOffer',並從服務器端代碼重定向即可完成同樣的任務,步驟更少,複雜性更低。 – David

回答

0

我也讀過你的評論,並假設你試圖使用AJAX結果需要用新記錄進行更新,首先在適當的編碼標準中,如果你需要刷新頁面,你不能使用AJAX就像你在做return RedirectToAction("SearchResult", "Home", SearchedOffer); 當你不需要重新加載頁面但是隻有頁面的一部分需要刷新的時候,你必須使用AJAX(EX:grid,dropdown等)。 它很容易,嘗試重新編寫代碼像下面

success: function(response) { 
alert(response); 
$("#SomeDiv").html(response);  
    } 

像上面我已經綁定到一個普通的div元素,但你可以綁定數據,無論你想(jqGrid的,數據表,分區等。 ,),但在卸載之前的數據之前。 如果您在使用數據表,請檢查此鏈接Data Table Refrsh with new data 如果jqGrid的請看@JqGrid Auto Refresh 或者如果你綁定數據在任何其他第三方控制研究你要看看你自己去刷新新的搜索數據。 希望這會有所幫助.....