2017-10-16 4 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 
} 

私のコントローラ機能は、私はあなたがJSON形式の結果を返すべきだと思う

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

答えて

0

である、あなたはこれを試すことができますか?

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

まず、async: falseを使用していますが、これは非常に悪い習慣です。非同期パターンを適切に使用し、コールバックを使用してAJAX呼び出しの完了後にロジックを実行します。

つまり、RoleクラスがToString()でシリアル化されているため、コードの主な問題があります。

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

次に、あなたのJSコードで、あなたがsuccessコールバックに提供data引数にRoleクラスからプロパティを取得することができます。このような何かが、代わりにJSONにそれをシリアル化するために、より適用可能です

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受け入れられた回答を変更する必要があると感じた理由は何ですか? –

関連する問題