ashx+ajson实现加载更多,请将代码补充完整

mibag 2016-03-15 02:12:48
前台页面,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这里面的代码如何写,非常感谢
...全文
335 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-03-16
  • 打赏
  • 举报
回复
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);
        }
mibag 2016-03-16
  • 打赏
  • 举报
回复
@hanjun0612, 你能粘出ashx中的代码吗? 或者“之前做过手机端的,其实就是每次通过ajax去查询后面的5条数据,然后拼接成html追加到body去”的实现代码,十分感谢!!!
正怒月神 版主 2016-03-16
  • 打赏
  • 举报
回复
之前做过手机端的,其实就是每次通过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字符串
                            })
                            
                        }
                    }
                });
            }
mibag 2016-03-15
  • 打赏
  • 举报
回复
问题肯定出在data: { action: "GetMoreNews", count: count, start: start }, GetMoreNews没有那个地方定义过,没有那个代码描述过
mibag 2016-03-15
  • 打赏
  • 举报
回复
@starfd 如果是字段名称不对,但字段guid是可以取出来的,是可以在页面中显示的啊,不是你说的那回事啊
  • 打赏
  • 举报
回复
你一点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
mibag 2016-03-15
  • 打赏
  • 举报
回复
引用 6 楼 starfd 的回复:
数据已经返回前台了,注意下面标红部分,你返回的跟js里面的key就不一致,当然那些地方全都是undefined了 你居然js都不改[/b]
@starfd 你粘出来的代码与我粘出来的代码有不同吗?我没有发现,你说:居然js都不改,那我要怎么改呢? 另:data: { action: "GetMoreNews", count: count, start: start }中的GetMoreNews是jquery的方法吗?
  • 打赏
  • 举报
回复
数据已经返回前台了,注意下面标红部分,你返回的跟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); });
mibag 2016-03-15
  • 打赏
  • 举报
回复
@starfd 指点一下,如何处理,谢谢!
mibag 2016-03-15
  • 打赏
  • 举报
回复
这段代码我是在网上找的,它真实的效果是:

而我运行出来的效果是:

我看来看去,觉得data: { action: "GetMoreNews", count: count, start: start }语句有问题,因为product.ashx数据传不到前台页面panicList2.aspx上,我认为是通过这条语句进行参数传递的
  • 打赏
  • 举报
回复
加载更多不就是分页吗?怎么分页查下不就知道了?
  • 打赏
  • 举报
回复
如果这个对你是有用的,那么你就先解释清楚它干什么用。怎么会连这个都问别人呢?
  • 打赏
  • 举报
回复
什么叫做“如何写”? 如果对你来说完全无用的东西,你就删除就行了。为什么非要把别人也耽误了呢?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧