2014-01-07 93 views
0

我已經從使用IE7轉換爲IE9,不幸的是我的部分視圖被返回並用部分視圖覆蓋整個頁面。部分視圖僅在ajax調用後才加載

上點擊HTML按鈕做的,我叫了一個

在javascript中:

 $.ajax({ 
      type: "POST", 
      url: $('form').attr('action'), 
      data: $('form').serialize(), 
      dataType: "text", 
      success: function (response) { 
       alert('Pass'); // This will be hit 
      }, 
      error: function (errorObj) { 
       alert('Error'); 
      } 
     }); 

這則轉到控制器:

[HttpPost] 
    public ActionResult Index(Index model) 
    { 
    return NewFeature(model); 
    } 

    [HttpPost] 
    public ActionResult NewFeature(Index model) 
    { 
     return PartialView("_feature", model); 
    } 

任何想法是什麼可能?

+0

1)如果AJAX是通過鏈接點擊或觸發形式提交,請確保您〔如取消行動](http://stackoverflow.com/questions/9370286/disable-href-after-clicking-ajax-js)2)確保你沒有'_layout.cshtml'在你的部分。 – StuartLC

回答

0

只要它不是提交按鈕,就不需要防止默認行爲。如果是提交按鈕,則需要通過返回false來覆蓋基本操作。

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

另外一點需要注意的是,該類型可能是應該:即

<input type="submit" onclick="return myFunction()" /> 

function myFunction() 
{ 
    DoWork(); 
    return false; 
} 

既然你正在返回的部分,並已證實,該警報被擊中,因爲答案應該是簡單是json而不是文本,但我看不到其他代碼。另外,您的控制器似乎錯誤地調用了這些功能。嘗試改變這一點。

[HttpPost] 
public ActionResult Index(Index model) 
{ 
    return this.RedirectToAction("NewFeature", new { model = model }); 
} 

[HttpGet] 
public ActionResult NewFeature(Index model) 
{ 
    return this.PartialView("_feature", model); 
} 

此代碼是在後 - >重定向 - >獲取模式,並將提出兩個請求,一個做工作,另一個獲取最新數據。這將導致ModelState刷新並新加載所需的所有數據。 javascript ajax文章將從控制器接收ActionResult作爲編譯後的cshtml,因此通過調用上面的代碼,html將呈現在您喜歡的任何元素中。

此外,

url: $('form').attr('action'), 

可以很容易地轉化爲:

url: '@Url.Content("~/Home/Index")',