2017-01-03 108 views
2

我對返回JSON的方法使用AJAX調用。我怎樣才能讀取返回的JSON而不被重定向到一個新的空白頁面?如何防止瀏覽器在提交表單時重定向到新頁面?

[HttpPost] 
public JsonResult Test() 
{ 
    return Json("JSON return test", JsonRequestBehavior.AllowGet); 
} 
@model List<POC.Web.Intranet.Models.AttachmentPropertyViewModel> 
<div> 
    @using (Ajax.BeginForm("Test", "DMS", new AjaxOptions { HttpMethod = "POST", OnSuccess = "endMethod()", OnBegin = "beginMethod()" })) 
    { 
     <h6>Properties</h6> 
     for (int i = 0; i < Model.Count; i++) 
     { 
      @Html.HiddenFor(item => item[i].AttachmentPropertyId); 
      @Html.HiddenFor(item => item[i].AttachmentMetaDataId); 
      <label>@Model[i].AttachmentPropertyName</label> 
      @Html.TextBoxFor(item => item[i].AttachmentPropertyValue, htmlAttributes: new { @class = "form-control property-value-txtbox" }); 
      <br /> 
     } 
     <input type="submit" id="btnSaveChanges" value="Save Chnages" /> 
    } 

    <hr /> 
</div> 

<script> 
    function beginMethod() { 
     alert("Start"); 
    } 
    function endMethod() { 
     alert("Finish"); 
     // also here i want to read the incoming json 
    } 
</script> 
+0

它被觸發'beginMethod'? –

+0

輸入'type =「submit」'將表單提交給控制器。所以把它改爲'button' – Qsprec

+0

這必須是stackoverflow上最常問的問題。 – philantrovert

回答

0

您可以停止重定向和執行您的Ajax按照下面給出的兩種方法之一調用。

  1. 按鈕類型從更改爲按鈕提交

  2. 或者調用形式通過防止利用下面的代碼片段提交表單的默認操作提交的JavaScript函數,

2

首先,你做不需要JsonRequestBehavior.AllowGet,因爲你做了POST請求。

[HttpPost] 
public JsonResult Test() 
{ 
    return Json("JSON return test"); 
} 

然後,改變這種:

OnSuccess = "endMethod()", OnBegin = "beginMethod()" 

OnSuccess = "endMethod", OnBegin = "beginMethod" 

而在你的腳本,通過response參數從controller得到json結果。

function endMethod(response) { 
    console.log(response); 
    alert("Finish"); 
    // also here i want to read the incoming json 
} 
相關問題