2017-07-11 13 views
0

私はどんな結果もなしにgoogleで答えを見つけようとしています。私の質問は私の見解で私のJsonデータ(List<string>)を操作する方法です。例えばdivに返されたすべての文字列を表示したいと思います。リスト<string> with Json asp.net mvc

CONTROLLER

[HttpPost] 
    public async Task<ActionResult> RetournerOP(int OF) 
    { 
     List<string> ops = new List<string>(); 
     Task verif = Task.Run(() => 
     { 
      try 
      { 
       connection.Open(); 
       string sqlQuery = "SELECT Operation from ZZ where ordre = " + OF; 
       SqlCommand command = new SqlCommand(sqlQuery, connection); 
       using (SqlDataReader reader = command.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         ops.Add(Convert.ToString(reader["Operation"])); 
        } 
       } 
      } 
      catch (Exception) { } 
      finally { connection.Close(); } 
     }); 
     await verif; 
     return Json(ops); 
    } 

お使いのサーバーのアクションメソッドは、現在の文字列の配列を返す

function retournerOp() { 
    $.ajax({ 
     url: '@Url.Action("RetournerOp", "Home", new { area = "Ajout" })', 
     data: {OF: document.getElementById("NumOf").value}, 
     type: 'POST', 
     dataType: 'JSON', 
     cache: false, 
     success: function (data) { 
      //How can I manipulate my data returned? 
     } 
    }); 
} 
+2

'data'をループして使ってみましたか? '$ .each(data、function(a、b){// do something}); – Shyju

+1

には2つのオプションがあります。ajaxレスポンスにあらかじめ設定されたビューを戻してHTMLに挿入するか、データバインディングライブラリを使用してJSONコレクションをクライアントサイドのhtmlテンプレートでパッチします。 –

+0

htmlテンプレートを表示できますか? –

答えて

1

VIEW:私は現在で立ち往生していますのはここ

です。そのため、あなたのAjaxコールの成功コールバックでは、それらをループし、必要に応じて(DOMへの追加など)各アイテムを使用することができます。 $.eachメソッドはループするのに便利です。例えば

、以下のコードでは、配列をループしてpタグ内の各項目をラップし、あなたがより複雑なレンダリングしたい場合は、ID myDivId

success: function (data) { 
    var t = "<div>"; 
    $.each(data,function(a, b) { 
       t += '<p>'+b+'</p>'; 
     }); 
    $("#myDivId").html(t); 
} 

とのdivにPタグのリストを追加しますhtmlマークアップの場合、jsonの代わりに部分的なビュー結果を返すアクションメソッドを作成することを強くお勧めします(他のコードがすでにそれを使用しているため、既存のメソッドを更新できない場合)。そのため、文字列のリストをpartiaビューに渡し、部分ビューには返す洗練されたマークアップをレンダリングするコードがあります。

return PartialView(ops); 

と部分図で、今

@model List<string> 
@foreach (var item in Model) 
{ 
    <p>@item</p> 
} 

サーバーの呼び出しからの応答は、必要に応じて、単純にそれとDOMを更新し、必要なHTMLマークアップがあるため。コメントで言及した他のものも

$.ajax({ 
    url: '@Url.Action("RetournerOp", "Home", new { area = "Ajout" })', 
    data: {OF:6}, 
    type: 'POST', 
    success: function (data) { 
     $("#myDivId").html(data); 
    } 
}); 

、あなたのサーバコードは、SQLインジェクションになりやすいです。そのようなSQL文にユーザー入力を直接連結してはいけません。パラメータ化されたクエリの使用を検討してください。

+0

OPの驚異的なSQLインジェクションの脆弱性に対する訂正を含めることができます。 – maccettura

+0

詳細なお返事ありがとう、本当に私を助けました!パラメータ化されたクエリについても読んでいきます。 –