前台页面,panicList2.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="panicList2.aspx.cs" Inherits="panicList2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>秒杀</title>
    <!--引入jQuery框架-->
     <script src="js/jquery.js" type="text/javascript"></script>  
<script type="text/javascript"> 
$(function () { 
function init(count, start) { 
$.ajax({ 
type: "GET", 
dataType: "json", 
url: "Handler/product.ashx", 
data: { action: "GetMoreNews", count: count, start: start }, 
beforeSend: function () { $("#divload").show(); $("#more2").hide(); }, 
complete: function () {$("#divload").show(); $("#more2").show(); }, 
success: function (json) { 
var str = ""; 
$.each(json, function (index, array) { 
var str="<a href=\"panicDetail.aspx?guid=" + array['guid'] + "\" style=\"text-decoration:none;\" target=\"_blank\" >"
+"<li class=\"list-li " + array['killstyle'] + " \">"
+"<div class=\"li-l\">"
+"<img src=\"http://www.shopnum1.com" + array['thumbimage2'] + "\"> </div> "
+"<ul class=\"li-r\">"
+"<li class=\"li-f\" style=\"text-decoration:none;\">" + array['productname'] + "</li>"
+"<li class=\"li-s\">"
+"<span class=\"li-money\">¥</span><ins>" + array['panicprice'] + "</ins>"
+"<span class=\"li-tip\">" + array['sale'] + "</span>"
+" <br><del>¥" + array['shopprice'] + "</del></li>"
+" <li class=\"li-t\">" + array['starttimestatus'] + "</li> </ul> </li>  </a>"
$("#more").append(str); 
}); 
if (json == "") { $("#more2").html("没有更多内容加载了……"); 
$("#divload").hide();


}); 

var count = 5;   //每次加载5条数据
var start = 0; 
init(count, start); 
$(".get_more").click(function () { 
start += 5;   //每次加载5条数据
init(count, start); 
}); 
}); 
</script> 
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div class="banner">             
<img src="../images/T1CSTTFsRaXXb1upjX.jpg"><b class="b-close"></b>         
</div>             
 <div class="list">                      
           <ul id="more"> </ul>
 <div id="divload" style="text-align:center;">
     <a href="javascript:;" class="get_more">::点击加载更多内容::</a> 
 </div>
    
    <div id="more2" style="text-align:center;"></div>
  
    </div>
    </div> 
    </form>
</body>
</html>-----------------------------------------------------------------------------------------
product.ashx
 <%@ WebHandler Language="C#" Class="product" %>
using System;
using System.Web;
using System.Data;
using mshopClass;
using System.Text;public class product : IHttpHandler {    public void ProcessRequest(HttpContext context)
    {
        StringBuilder tb = new StringBuilder();
        context.Response.ContentType = "text/plain";
        int count = int.Parse(context.Request.QueryString["count"].ToString());  //获取从aspx页面传递过来的参数
        int start = int.Parse(context.Request.QueryString["start"].ToString());  //获取从aspx页面传递过来的参数
        DataTable dt = WineNewsQueryFromMToN(count, start);
        tb.Append(DataTableToJSON(dt));
        context.Response.Write(tb.ToString());
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }    public static DataTable WineNewsQueryFromMToN(int count, int start)
    {        string sql = "SELECT TOP " + count + " guid,name,detail,createtime FROM ShopNum1_Shop_Product f WHERE guid NOT IN (SELECT TOP " + start + " guid FROM tb1_Shop_Product ORDER BY createtime desc) ORDER BY createtime desc";
        DataTable dt = mallCtr.SqlTable(sql);
        return dt;
    }    /// <summary>
    /// 将dt转化成Json数据 格式如 table[{id:1,title:'体育'},id:2,title:'娱乐'}]
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static string DataTableToJSON(DataTable dt)
    {
        StringBuilder jsonBuilder = new StringBuilder();
        jsonBuilder.Append("[");
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            if (i > 0)
                jsonBuilder.Append(",");
            jsonBuilder.Append("{");
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                if (j > 0)
                    jsonBuilder.Append(",");
                jsonBuilder.Append(dt.Columns[j].ColumnName.ToLower() + ": '" + dt.Rows[i][j].ToString().Replace("\t", " ").Replace("\r", " ").Replace("\n", " ").Replace("\'", "\\\'") + "'");
            }
            jsonBuilder.Append("}");
        }
        jsonBuilder.Append("]");
        return jsonBuilder.ToString();
    }
}-------------------------------------------------------------------------------------------------------------------
我想问的是data: { action: "GetMoreNews", count: count, start: start }, GetMoreNews这里面的代码如何写,非常感谢

解决方案 »

  1.   

    这段代码我是在网上找的,它真实的效果是:而我运行出来的效果是:我看来看去,觉得data: { action: "GetMoreNews", count: count, start: start }语句有问题,因为product.ashx数据传不到前台页面panicList2.aspx上,我认为是通过这条语句进行参数传递的
      

  2.   

    @starfd  指点一下,如何处理,谢谢!
      

  3.   

    数据已经返回前台了,注意下面标红部分,你返回的跟js里面的key就不一致,当然那些地方全都是undefined了
    你居然js都不改var str="<a href=\"panicDetail.aspx?guid=" + array['guid'] + "\" style=\"text-decoration:none;\" target=\"_blank\" >"
    +"<li class=\"list-li " + array['killstyle'] + " \">"
    +"<div class=\"li-l\">"
    +"<img src=\"http://www.shopnum1.com" + array['thumbimage2'] + "\"> </div> "
    +"<ul class=\"li-r\">"
    +"<li class=\"li-f\" style=\"text-decoration:none;\">" + array['productname'] + "</li>"
    +"<li class=\"li-s\">"
    +"<span class=\"li-money\">¥</span><ins>" + array['panicprice'] + "</ins>"
    +"<span class=\"li-tip\">" + array['sale'] + "</span>"
    +" <br><del>¥" + array['shopprice'] + "</del></li>"
    +" <li class=\"li-t\">" + array['starttimestatus'] + "</li> </ul> </li>  </a>"
    $("#more").append(str); 
    }); 
      

  4.   

     @starfd  你粘出来的代码与我粘出来的代码有不同吗?我没有发现,你说:居然js都不改,那我要怎么改呢?另:data: { action: "GetMoreNews", count: count, start: start }中的GetMoreNews是jquery的方法吗?
      

  5.   

    你一点js都不懂吗?
    string sql = "SELECT TOP " + count + " guid,name,detail,createtime FROM ShopNum1_Shop_Product f WHERE guid NOT IN (SELECT TOP " + start + " guid FROM tb1_Shop_Product ORDER BY createtime desc) ORDER BY createtime desc";
    你看你取得是什么列名,人家js将json显示到页面上用的什么key
      

  6.   

    @starfd 如果是字段名称不对,但字段guid是可以取出来的,是可以在页面中显示的啊,不是你说的那回事啊
      

  7.   

    问题肯定出在data: { action: "GetMoreNews", count: count, start: start }, GetMoreNews没有那个地方定义过,没有那个代码描述过
      

  8.   

    之前做过手机端的,其实就是每次通过ajax去查询后面的5条数据,然后拼接成html追加到body去
    var maxPage = @((int)ViewData["maxPage"]);
            var currentPage = 0;        $(window).scroll(function () {
                var scrollTop = $(this).scrollTop();
                var scrollHeight = $(document).height();
                var windowHeight = $(this).height();
                if (scrollTop + windowHeight == scrollHeight) {
                    
                    if (currentPage > maxPage)
                    {
                        return ;
                    }
                    currentPage++;
                    $.ajax({
                        url: "IndexPage",
                        datatype:"json",
                        data: "currentPage=" + currentPage,
                        success: function (data) {
                            if (data != '') {
                                $(data).each(function (index, item) {
                                    //拼接html字符串
                                })
                                
                            }
                        }
                    });
                }
      

  9.   

    @hanjun0612, 你能粘出ashx中的代码吗?
    或者“之前做过手机端的,其实就是每次通过ajax去查询后面的5条数据,然后拼接成html追加到body去”的实现代码,十分感谢!!!
      

  10.   

    ashx的代码,只是查询而已啊 = =.
    差不多就是下面这样了
    /// <summary>
            /// 手机滑动加载数据
            /// </summary>
            /// <param name="currentPage"></param>
            /// <returns></returns>
            public JsonResult IndexPage(int currentPage )
            {
                var q = db.WX_Goods.OrderByDescending(x => x.id).ThenByDescending(x => x.createTime).Skip(currentPage * 10).Take(10).ToList();            
                return Json(q, JsonRequestBehavior.AllowGet);
            }