1

Javascriptを使用してデータベースから返されたオブジェクトにアクセスするにはどうすればよいですか

この関数はJavascriptから呼び出されます

function searchUser() {
    var userName = document.getElementById('UserName').value
    $.post("SearchForUser", { userName: userName }, function (UserInfo) {

        UserInfo; //How to access the returned UserInfo properties?

    });
}

このコードを使用して、データベースからUserInfoを取得します

    public UserInfo SearchForUser(string userName)
    {
       string password = "nicola";

        using (FormValueEntities db = new FormValueEntities())
        {
            //Query the database for the user
            UserInfo userInfo = new UserInfo();
            userInfo = db.UserGet(userName, password).FirstOrDefault();
            return userInfo;
        }
    }

UserInfoには、UserName、UserPassword、およびDescriptionのプロパティがあります。

4

3 に答える 3

1

返したほうがいいよJsonResult

public JsonResult SearchForUser(string userName)
{
     ...
     return Json(userInfo, JsonRequestBehavior.AllowGet);
     //you don't need the AllowGet if this is a POST action, cannot tell
}

次に、JavaScript でモデルに簡単にアクセスできます。

$.post("SearchForUser", { userName: userName }, function (UserInfo) {

        console.log(UserInfo.UserName) ; 

    });
于 2012-10-26T08:07:04.553 に答える
0

メソッドJsonからアクションを返すことができます。これにより、指定したオブジェクトが JSON シリアル化され、JsonResult.

public ActionResult Search(string usernameName)
{
    return Json(SearchForUser(userName)); // borrows the result of your SearchForUser method and returns it as JSON-serialized string.
}

JsonResult応答のコンテンツ タイプを「application/json」に設定する必要があります。つまり、jQuery$.postはその応答ヘッダーを確認し、自動的に逆シリアル化する必要があります。

function searchUser() {
    var userName = document.getElementById('UserName').value
    $.post("Search", { userName: userName }, function (UserInfo) {

        alert(UserInfo.Description); // example of consuming the deserialized JSON messsage.

    });
}
于 2012-10-26T08:07:43.813 に答える
0

スクリプトの 2 番目の部分は、サーバー側の Java だと思います。

そのように返すことはできません。jQuery が行うことは、サーバーに対して http 要求を行い、サーバーが応答を返すことです。

鳩がコメントしたように、応答を JSON としてフォーマットし、クライアント側で jQuery.getJSON を使用できます。

于 2012-10-26T08:12:18.480 に答える