2012-02-10 11 views
1

:ビューでjQuery.each()関数でサブプロパティを取得する方法は?コントローラで

 var jsonData = new 
     { 
      total = totalPages, 
      page = pageIndex, 
      records = totalRecords, 
      rows = founduser 
     }; 
     return jsonData; 

function listItems(col, order, page, rows) { 
    $.ajax({ 
     type: "GET", 
     url: '@Url.Content("~/User/GetUsers")', 
     data: { col: col, order: order, page: page, rows: rows }, 
     dataType: 'json', 
     success: function (response) { 
      var tags = "<tr><th>Login id</th><th>First name</th><th>Middle name</th><th>Last name</th><th>Prefix</th><th>Suffix</th><th>Reset</th><th>Email</th><th></th></tr>"; 
      $.each(response, function (index, item) { 
        tags += "<tr id=row-" + item.UserID + ">" + 
           "<td>" + item.LoginID + "</td>" + 
           "<td>" + item.FirstName + "</td>" + 
           "<td>" + item.MiddleName + "</td>" + 
           "<td>" + item.LastName + "</td>" + 
           "<td>" + item.Prefix + "</td>" + 
           "<td>" + item.Suffix + "</td>" + 
           "<td>" + item.IsReset + "</td>" + 
           "<td>" + item.SendEmail + "</td>" + 
           "<td>" + 
           "<a href=# class='ActivateItem' data-id = " + item.UserID + " item-data = " + item.LoginID + ">Activate</a> | " + 
           "<a href=/BaseAdmin/User/Details/" + item.UserID + ">Details</a></td></tr>"; 
      }); 
      $("#table-list").html(tags); 
     } 
    }); 
}; 

行は、今、私は、行の値を取得し、テーブルの上に置くことができるか、IEnumerable arrayのですか?

<table id="table-list"> 
</table> 

値を取得できますが、jQuery.eachを使用して表示できません。手伝ってくれてありがとう!

サンプルプレビュー:あなたのコントローラの試みで

enter image description here

+0

あなたが応答で受け取っているjsonを投稿することができます – Rafay

+0

@ 3nigma実際には私の問題です、私はjsonの結果を得ることができませんが、コントローラの部分で見ることができるように、返されるデータがあります。 – fiberOptics

+1

chromeを使用し、成功関数の先頭にconsole.log(応答)を追加します。 jsonの結果が適切に返されるかどうかを確認してください。そうでない場合は、Johnの勧告を使用してください。また、[HttpGet]を呼び出しているので、 'return Json(jsonData、JsonRequestBehavior.AllowGet' – rkw

答えて

3

一つ、あなたのコントローラのアクションからJSON結果を返す:

public ActionResult Foo() 
{ 
    var jsonData = new 
    { 
     total = totalPages, 
     page = pageIndex, 
     records = totalRecords, 
     rows = founduser 
    }; 
    return Json(jsonData, JsonRequestBehavior.AllowGet); 
} 

することができますあなたのAJAX successコールバックでrowsプロパティを通じてループ:このコードで改善することができ

success: function (response) { 
var tags = "<tr><th>Login id</th><th>First name</th><th>Middle name</th><th>Last name</th><th>Prefix</th><th>Suffix</th><th>Reset</th><th>Email</th><th></th></tr>"; 
$.each(response.rows, function (index, item) { 
    tags += "<tr id=row-" + item.UserID + ">" + 
       "<td>" + item.LoginID + "</td>" + 
       "<td>" + item.FirstName + "</td>" + 
       "<td>" + item.MiddleName + "</td>" + 
       "<td>" + item.LastName + "</td>" + 
       "<td>" + item.Prefix + "</td>" + 
       "<td>" + item.Suffix + "</td>" + 
       "<td>" + item.IsReset + "</td>" + 
       "<td>" + item.SendEmail + "</td>" + 
       "<td>" + 
        "<a href=# class='ActivateItem' data-id = " + item.UserID + " item-data = " + item.LoginID + ">Activate</a> | " + 
        "<a href=/BaseAdmin/User/Details/" + item.UserID + ">Details</a>" + 
       "</td>" + 
      "</tr>"; 
    }); 
    $("#table-list").html(tags); 
} 

物事:

  • DOMツリーを生成するために文字列連結を使用しないでください。過負荷のjQuery(html, props)を使用してください。
  • DetailsアンカーのURLをハードコードしないでください - >それを生成するためにURLヘルパーを使用してください。
+0

ありがとう! – fiberOptics

1

return Json(jsonData); 

化するJsonResultを返します。

関連する問題