2016-12-22 2 views
1

После выполнения поиска в Google и документации для чтения я смущен, как это работает. При вызове общего обработчика со значением и возвращении нескольких значений при успешном выполнении. Как вы просматриваете записи в базе данных? Пропускаете ли вы записи в общем обработчике или при успешном выполнении с помощью функции JQuery Every Function? Ниже мой текущий код, который не работает, когда существует несколько значений. Удаление $ .each (vardata, функция() и она работает;. Однако, только одна запись показанаJQuery Извлечение нескольких значений из общего обработчика

Это, как данные должны выглядеть после ввода в Эри в текстовом поле и нажмите на кнопку

Business Profile ID: 8 
Business Name: The Boston Store 
Phone Number: 814-455-1478 
E-Mail: [email protected] 

Business Profile ID: 9 
Business Name: Sam The Man Pizza 
Phone Number: 814-868-3809 
E-Mail: [email protected] 

JQuery скрипт

$(document).ready(function() { 
     $('#button').click(function() { 
      $.ajax({ 
       contentType: "text/html; charset=utf-8", 
       data: "ID=" + $('#businessSelect').val(), 
       url: "getTest.ashx", 
       dataType: "text", 
       success: function (data) { 
        var vardata = JSON.parse(data); 
        $.each(vardata, function (index, value) { 
         $("#BusProfileID").html(value.BusProfileID); 
         $("#BusinessName").html(value.BusinessName); 
         $("#BusinessPhone").html(value.BusinessPhone); 
         $("#BusinessEmail").html(value.BusinessEmail); 
        }); 
       } 
      }) 
     }); 
    }); 

обработчик ASHX страница

 public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "text/html"; 
     string ID = context.Request.QueryString["ID"]; 
     SqlConnection conn; 
     SqlCommand comm; 
     SqlDataReader reader; 
     string connectionString = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString; 
     conn = new SqlConnection(connectionString); 
     comm = new SqlCommand("SELECT BusProfileID, BusinessName, BusinessPhone, BusinessEmail FROM [BusProfile] WHERE BusinessCity = @BusinessCity", conn); 
     comm.Parameters.Add("@BusinessCity", System.Data.SqlDbType.VarChar); 
     comm.Parameters["@BusinessCity"].Value = ID; 
     try 
     { 
      conn.Open(); 
      reader = comm.ExecuteReader(); 
      List<BusinessData> objList = new List<BusinessData>(); 
      BusinessData objData; 
      while (reader.Read()) 
      { 
       objData = new BusinessData(); 
       objData.BusProfileID = reader["BusProfileID"].ToString(); 
       objData.BusinessName = reader["BusinessName"].ToString(); 
       objData.BusinessPhone = reader["BusinessPhone"].ToString(); 
       objData.BusinessEmail = reader["BusinessEmail"].ToString(); 
       objList.Add(objData); 
       context.Response.Write(JsonConvert.SerializeObject(objList)); 
      } 
      reader.Close(); 
     } 

     finally 
     { 
      conn.Close(); 
     } 
    } 

    public class BusinessData 
    { 
     public string BusProfileID { get; set; } 
     public string BusinessName { get; set; } 
     public string BusinessPhone { get; set; } 
     public string BusinessEmail { get; set; } 
    } 
    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

ASPX страница

  <div class="row"> 
       <div class="columns medium-12"> 
        <div class="row"> 
         <div class="medium-6 columns medium-centered"> 
          <label style="font-size:1em">Select City:</label> 
          <input type="text" id="businessSelect" style="height:2em;" /> <input type="button" id="button" value="Click me" /> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="medium-6 columns medium-centered"> 
          <label style="font-size:1em">Business Profile ID:</label> 
          <label id="BusProfileID" style="font-size:1em;"></label> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="medium-6 columns medium-centered"> 
          <label style="font-size:1em">Business Name:</label> 
          <label id="BusinessName" style="font-size:1em;"></label> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="medium-6 columns medium-centered"> 
          <label style="font-size:1em">Phone Number:</label> 
          <label id="BusinessPhone" style="font-size:1em;"></label> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="medium-6 columns medium-centered"> 
          <label id="BusinessEmail" style="font-size:1em">E-Mail:</label> 
         </div> 
        </div> 
       </div> 

ответ

0

Если вы хотите loop через результат, он должен быть object. Теперь вы получаете stringify результат. поэтому вы не можете его повторить.

Использование JSON.parse для преобразования результата в JSON объект затем использовать $.each на этом объекте

var vardata = JSON.parse(data); 
$.each(vardata, function (index, value) { 
    // TODO 
}); 

Так что вам не нужно будет разделить и принять в array. вы можете указать параметр value в заявлении each.

EDIT

Чтобы использовать значение из JSON, вы можете использовать его свойство, как установить из результата сервера.

Мол,

$.each(vardata, function (index, value) { 
    $("#BusProfileID").html(value.BusProfileID); 
    $("#BusinessName").html(value.BusinessName); 
    $("#BusinessPhone").html(value.BusinessPhone); 
    $("#BusinessEmail").html(value.BusinessEmail); 
}); 

Используйте class, чтобы сохранить данные, которые вы извлеченные из SQL Query

public class BusinessData 
{ 
    public long BusProfileID { get; set; } 
    public string BusProfileID { get; set; } 
    public string BusProfileID { get; set; } 
    public string BusProfileID { get; set; } 
} 

Создать List<BusinessData> объект и добавить каждые элементы из читателя в этот список

reader = comm.ExecuteReader(); 
List<BusinessData> objList = new List<BusinessData>(); 
BusinessData objData; 
while (reader.Read()) 
{ 
    objData = new BusinessData(); 
    objData.BusProfileID = reader["BusProfileID"].ToString(); 
    objData.BusinessName = reader["BusinessName"].ToString(); 
    objData.BusinessPhone = reader["BusinessPhone"].ToString(); 
    objData.BusinessEmail = reader["BusinessEmail"].ToString(); 
    objList.Add(objData); 
    context.Response.Write(JsonConvert.SerializeObject(objList)); 
} 
reader.Close(); 

JsonConvert включен в Newtonsoft.Json пакет nuget.

+0

не возвращает результатов. Я отредактировал оригинальный вопрос, чтобы показать ваше предложение. –

+0

Я все еще не получаю результатов, представленных на основе ваших дополнительных предложений. Однако, работая над этим вопросом, я лучше понимаю, как работает JSON. –

Смежные вопросы