$.post参数在一般处理程序中接收问题
无法再一般 处理程序中接收到参数action,在这里把所有代码发出,是因为在asp.net版本没的到解决,所以发全部代码,大哥大姐们帮忙啊,谢谢
前台代码:
- HTML code
<html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <script src="js/jquery-1.4.2-vsdoc.js" type="text/javascript"></script> <script src="js/jquery-1.4.2.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $.post("WSXFY.ashx", {"action":"getpagecount" }, function (data, status) { for (var i = 1; i <= data; i++) { var td = $("<td><a href=''>" + i + "</a></td>"); $("#trPage").append(td); } }); }); $("#trPage td").click(function (e) { e.preventDefault(); $.post("WSXFY.ashx", { "action": "getpagedata", "pagenum": $(this).text() }, function (data, staus) { var comments = $.parseJSON(data); $("#ulComment").empty(); for (var i = 0; i < comments.length; i++) { var comment = comments[i]; var li = "<li>" + comment.id + comment.name + comment.Development + comment.Note + comment.Datetime + "</li>"; $("#ulComment").append(li); } }); }); </script></head><body><div ><ul id="ulComment"></ul><table><tr ></tr></table></div></body></html>后台代码:
- C# code
<%@ WebHandler Language="C#" Class="Handler" %>using System;using System.Web;using System.Data;using System.Data.Sql;using System.Data.SqlClient;using System.Configuration;using System.Web.Script.Serialization;using System.Collections.Generic;public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; // string action=context.Request["action"];//无法获取action的值 //string action=context.Request.Form["action"]; // string action=context.Request.QueryString["action"]; string action = context.Request.Params["action"]; // string action = "getpagedata"; string pagenum = context.Request["pagenum"];//无法获取pagenum的值 //string pagenum = "1"; int pagecount;//总页数 if (action == "getpagecount") { string cmdString = @"select count(*) from Table1"; using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { using(SqlCommand cmd = new SqlCommand(cmdString, conn)) { conn.Open(); int count =Convert.ToInt32(cmd.ExecuteScalar()); pagecount = count/10; } } if (pagecount % 10 == 0) { pagecount++; } context.Response.Write(pagecount); } else if (action == "getpagedata") { string cmdString = @"select * from (select id ,name,Development,Note,Datetime,Row_Number()over(order by id) as rownum from table1)t where t.rownum>=@pagenum*10-9 and t.rownum<=@pagenum*10"; using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { using (SqlCommand cmd = new SqlCommand(cmdString, conn)) { conn.Open(); cmd.Parameters.Add("@pagenum",pagenum); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); List<comment> list = new List<comment>(); foreach (DataRow myRow in ds.Tables[0].Rows) { list.Add(new comment() { id=myRow["id"].ToString(),name=myRow["name"].ToString(),Development=myRow["Development"].ToString(),Note=myRow["Note"].ToString(),Datetime=myRow["Datetime"].ToString() }); } JavaScriptSerializer jss = new JavaScriptSerializer(); context.Response.Write(jss.Serialize(list)); } } } } public bool IsReusable { get { return false; } } public class comment { public string id { get; set; } public string name { get; set; } public string Development { get; set; } public string Note { get; set; } public string Datetime { get; set; } }}
[解决办法]
你用firebug看一下,请求确实发出并带有参数了?
[解决办法]
直接访问
WSXFY.ashx?action=getpagedata&pagenum=1
看是否有值
[解决办法]
1.$("#trPage").append(td)此句是找到ID为trPage的元素,你页面上没有这个元素
2.i <= data
目测你在C#中反序列化一个泛型列表,这样传回客户端是一个JSON数组,那么你应该写i<data.length
另外,你在项目中调试,设置断点,然操作页面,在服务器端是可以调试的,包括在客户端你也可以用chrome或者firebug调试。
在一个全程可调试的环境中,很容易就可以解决你的问题。