2017-10-16 53 views
-1

我正在使用ASP.Net MVC 5.我有一個包含角色表值的表。 當我點擊編輯按鈕比發送jQuery請求獲取數據,它會返回像"UMS.Entities.Role"這樣的數據,但我沒有從它獲取值,但是我收到來自數據庫的禮儀響應,但我在jQuery中遇到問題。jQuery在ASP.Net中獲取請求MVC 5

function dataForEdit(id) { 
    var data = GetRequestedData('/Admin/Role/Edit/' + id); 
    $("#create-form").slideDown(); 
    $('.formEditBtn').slideDown(); 
    setInputValue('#role-name', data.Name); 
    $("#roleID").attr("value", data.RoleId);   
} 

GetRequestedData('/Admin/Role/Edit/' + id)是單獨的函數,它是單獨的文件。

function GetRequestedData(url) { 
    $.ajax({ 
    url: url, 
    async: false, 
    type: 'GET', 
    success: function (data) { 
     resultData = data; // here I am getting this UMS.Entities.Role 
    }, 
    error: function (error) { 
     $(this).remove(); 
     alert(error.statusText); 
    } 
    }); 

    return resultData 
} 

我的控制器功能是

public Role Edit(int id) { 
    Role role = _roleService.GetById(id); 
    return role; 
} 

回答

0

我覺得你應該返回JSON結果,你可以試試這個?

public ActionResult Edit(int id) 
{ 
    Role role = _roleService.GetById(id); 
    return Json(role , JsonRequestBehavior.AllowGet); 
} 
0

首先,您使用的是async: false,這是非常糟糕的做法。正確使用異步模式並在AJAX調用完成後使用回調來執行邏輯。

也就是說,代碼中的主要問題是因爲Role類正在通過ToString()進行序列化。這將是更適用於它序列化到JSON代替,像這樣:

public ActionResult Edit(int id) 
{ 
    Role role = _roleService.GetById(id); 
    return Json(role, JsonRequestBehavior.AllowGet); 
} 

然後在你的JS代碼,你可以在提供給success回調data參數檢索來自Role類的屬性

function dataForEdit(id) { 
    GetRequestedData('/Admin/Role/Edit/' + id, function(data) { 
    $("#create-form, .formEditBtn').slideDown(); 
    setInputValue('#role-name', data.Name); 
    $("#roleID").val(data.RoleId); 
    }); 
} 

function GetRequestedData(url, callback) { 
    $.ajax({ 
    url: url, 
    type: 'GET', 
    success: callback, 
    error: function(error) { 
     $(this).remove(); 
     alert(error.statusText); 
    } 
    }); 
} 

GetRequestedData('/Admin/Role/Edit/' + id); 
+0

感謝主席先生分享您寶貴的經驗,它幫助我很多。 –

+0

@KhizranAhmad你覺得有必要改變接受的答案嗎? –