2017-01-19 170 views
-1

我有一種方法可以將json數據返回到我的mvc視圖,不知道爲什麼我的視圖顯示json數據而不是我在成功的部分。這是我的Post方法:使用json數據渲染MVC視圖

[HttpPost] 
[Route("resetpassword")] 
public async Task<ActionResult> ResetPassword(ResetPasswordViewModel resetPasswordViewModel) 
{ 
    ... 
    if (ModelState.IsValid) 
    { 
     if (resetPasswordViewModel.Password == resetPasswordViewModel.ConfirmPassword) 
     { 
      var user = Task.Run(() => Service.GetUserByEmailAsync(email)).Result; 
      if (user != null) 
      { 
       userRequest.Id = user.FirstOrDefault().Id; 
       userRequest.Password = resetPasswordViewModel.Password; 
       userRequest.Token = token; 
       await Service.UpdateUserAsync(userRequest); 
      } 
     } 
     else 
     { 
      return Json(new { status = "error", message = "Please enter the same value again" }); 
     } 
    } 
    return Json(new { status = "success", message = "" }); 
} 

這是我的觀點是模態:

@model Models.ResetPasswordViewModel 

@if (Model != null) 
{ 
    <div class="page resetPassword"> 
     @using (Html.BeginForm("resetpassword", "Home", FormMethod.Post)) 
     { 
      @Html.AntiForgeryToken() 
      <div class="modal" id="reset-password"> 
       <div class="modal-content"> 
        <span class="close">X</span> 
        <div><input type="email" name="email" id="email" readonly [email protected] /></div> 
        <div class="create-user-label">Password</div> 
        .... 

,這是我的ajax功能:

function resetPassword() { 
    var postResult = null; 
    var data = { 
     Email: document.getElementById('email').value 
    }; 
    var path = "/resetpassword"; 
    var errorMessage = document.getElementById('Message'); 

    $.ajax({ 
     dataType: "json", 
     contentType: "text/plain", 
     url: path, 
     type: "POST", 
     cache: false, 
     data: data, 
     success: function (result) { 
      postResult = $.parseJSON(result); 
      alert(postResult.data); 
      if (result && result.message) { 
       $('#reset-password').hide(); 
       $('#reset-thank-you').show(); 
      } 
     }, 
     error: function() { alert("error"); } 
    }); 
} 

但不是我的觀點,我只看到JSON數據在我的屏幕上,例如:

{"status":"success","message":""} 
+0

不知道這是問題,但我想你會想「的await」 GetUserByEmailAsync爲好。 – DaniDev

+0

它表明你有一個觸發該功能的提交按鈕,並且你沒有取消默認的提交(所以你做了一個Ajax調用和一個正常的提交)。觸發該呼叫的元素是什麼? (並注意,你還需要刪除'contentType:「text/plain」,') –

+1

此外,該方法返回json,所以刪除'postResult = $ .parseJSON(result);'(它已經是json) –

回答

0

您的數據會自動從JSON格式轉換爲Javascript對象。

想必你只是想在警報顯示消息:

success: function (result) 
    { 
     alert(result.data.message); 
    }, 
0

那麼你的數據正在經歷,看起來像你有一些映射問題,你應該試試這個。

$.ajax({ 
    dataType: "json", 
    contentType: "text/plain", 
    url: path, 
    type: "POST", 
    cache: false, 
    data: data, 
    success: function (result) { 
     alert(result['status']); 
     if (result['status']== 'success') { 
      $('#reset-password').hide(); 
      $('#reset-thank-you').show(); 
     } 
    }, 
    error: function() { alert("error"); } 
}); 
+0

這與OP的問題無關 –

+0

我可以請您請您在答案中添加更多的上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – RBT