2013-07-09 2 views
0

Я использую хранимую процедуру для запроса внутренней базы данных на основе некоторого ввода пользователя.MVC4 Parse json возвращается с запроса Ajax

У меня есть это до такой степени, что мой запрос ajax получит строку JSON, которую мой контроллер строит с помощью StringBuilder. Строка ответа отформатирована так же, как в следующем:

{ "Head":[ { "FIRST_NAME":"JOHN","LAST_NAME":"SMITH","STORE":"1","COMPANY":"1"} ]} 

Я хочу, чтобы вставить эти значения в некоторых HTML тегов ввода с помощью JQuery, но я с трудом найти способ правильно анализировать их.

  $('#number').blur(function() { 
     $.ajax({ 
      url: "../Home/SearchUser", 
      type: "get", 
      datatype: 'json', 
      data: { reqMem: $("#number").val() }, 
      success: function (response) { 

        // This is where I need to parse and shove some values 
        $("#name").val(response.name) 
        $("#store").val(response.name) 
        // etc.. 
      }, 

      error: function (textStatus) { 
       alert("error: " + textStatus); 
      }, 
     }); 
    }); 

Ниже мой контроллер метод. Любые советы будут очень признательны. Я новичок в этом.

[HttpGet] 
    public string SearchUser(string reqMem) 
    { 
     SqlConnection con = new SqlConnection("I manually have my string here") 
     SqlDataAdapter da = new SqlDataAdapter(); 
     SqlCommand cmd = new SqlCommand(); 
     DataTable dt = new DataTable(); 
     cmd = new SqlCommand("dbo.spx_findReqMember", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@reqMemName", reqMem); 
     da.SelectCommand = cmd; 
     da.Fill(dt); 

     StringBuilder JsonString = new StringBuilder(); 

     //Exception Handling 
     if (dt != null && dt.Rows.Count > 0) 
     { 
      JsonString.Append("{ "); 
      JsonString.Append("\"Head\":[ "); 

      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       JsonString.Append("{ "); 
       for (int j = 0; j < dt.Columns.Count; j++) 
       { 
        if (j < dt.Columns.Count - 1) 
        { 
        JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + 
        "\":" + "\"" + 
        dt.Rows[i][j].ToString().TrimEnd() + "\","); 
        } 
        else if (j == dt.Columns.Count - 1) 
        { 
        JsonString.Append("\"" + 
        dt.Columns[j].ColumnName.ToString() + "\":" + 
        "\"" + dt.Rows[i][j].ToString().TrimEnd() + "\""); 
        } 
       } 

       /*end Of String*/ 
       if (i == dt.Rows.Count - 1) 
       { JsonString.Append("} "); } 
       else 
       { JsonString.Append("}, "); } } 

      JsonString.Append("]}"); 
      return JsonString.ToString(); } 
     else 
     { return reqMem; } } 
+1

как общие указания, я настоятельно рекомендовал бы читать на классе JavaScript serialiser, http://msdn.microsoft.com/ ан-нас/библиотека/system.web.script.serialization.javascriptserializer.aspx. Это позволит вам хранить ваши данные в объекте, а затем автоматически сериализовать его для вас, обрабатывая все экранирование. –

+0

Я посмотрю на это. Спасибо за ввод. –

ответ

1

Посмотрите на parseJSON, похоже, что это может вам помочь.

http://api.jquery.com/jQuery.parseJSON/

Я также рекомендую вам посмотреть этот пост: How to make simple JSON object using C# string Builder

+0

Я проверил это и сделаю небольшой класс модели, чтобы позволить мне работать с каркасом (в частности, ответ Дарина «Никогда не делай этого»). Еще раз спасибо. –