• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

JQuery从通用处理程序中检索多个值

jquery 来源:Dan Nick 4次浏览

在Google上搜索并阅读文档后,我很困惑它是如何工作的。当调用具有值的通用处理程序并成功返回多个值时。你如何循环访问数据库中的记录?你是循环遍历通用处理程序的记录,还是通过JQuery的每个函数成功执行?以下是当前的代码,当存在多个值时不起作用。删除$。每个(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> 

===========解决方案如下:

如果通过结果要loop,它必须是一个object。现在你是stringify你的结果。所以你不能迭代它。

使用JSON.parse的结果转换为JSON对象,然后使用$.each该对象

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

上所以你不会需要拆分并考虑到array。您可以参考each声明中的value参数。

编辑

要从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>对象,并从你的读者添加每个项目到这个列表

​​ 包含

JsonConvertNewtonsoft.Json nuget包中。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)