Jquery购物车jsorder改进版,支持后台处理程序直接转换成DataTable处理

87 篇文章 0 订阅
87 篇文章 0 订阅
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=GB18030"/>
	<title></title> 
	<script type="text/javascript" src="../js/jquery-1.9.1.min.js" ></script> 
	<link href="./demo.css" rel="stylesheet"/>
	<link href="../css/order.css" rel="stylesheet"/>
	<script type="text/javascript" src="../js/cookie.js" ></script> 
	<script type="text/javascript" src="../js/jsorder.1.1.js" ></script> 
	 </head>  
<body>
	<h1>JSORDER 案例</h1>
	<table><tr><td colspan="3" align="left">案例一:我的菜单(点击菜名即可加入菜单)</td></tr><tr>
           <td class="jsorderadd" id="80001" productid="80001" price="12" jsordername="红烧豆腐">红烧豆腐 12元</td>
	       <td class="jsorderadd" id="80002" productid="80002" price="32" jsordername="毛血旺">毛血旺 32元</td>
	       <td class="jsorderadd" id="80003" productid="80003" price="18" jsordername="套餐:京酱肉丝+2米饭 18元">套餐:京酱肉丝+2米饭 18元</td></tr></table>  
	<div id="result"></div>
</body>
</html> 
<script type="text/javascript">
//jsorder配置
    $.fn.jsorder.defaults = {
        staticname: 'jsorder',
        jsorderclass: 'jsorder',
        savecookie: true,
        cookiename: 'jsorder',
        numpre: 'no_',
        jsorderpre: 'jsorder_',
        jsorderspanpre: 'jsorderspan_',
        pricefiled: 'price',
        namefiled: 'jsordername',
        leftdemo: '我的菜单',
        subbuttom: '',
        //addbuttom : 'a.jsorderadd', 
        addbuttom: 'td.jsorderadd',
        nomessage: '你今天的食谱是还空的',
        dosubmit: function (data) {
            alert(JSON.stringify(data));
            //$("#result").html("json内容:" + JSON.stringify(data)).css('background', '#e0e0e0');
            jsonAjax("ShoppingCar.ashx", JSON.stringify(data), "text", getsuccess);
        }
    };
$("body").jsorder();

function jsonAjax(url, param, datat, callback) {
    $.ajax({
        type: "post",
        url: url,
        data: param,
        dataType: datat,
        success: callback,
        error: function () {
            jQuery.fn.mBox({
                message: '恢复失败'
            });
        }
    });
};

function getsuccess(o) {
    //alert(o);
    //成功后操作
}
  
</script>

<%@ WebHandler Language="C#" Class="ShoppingCar" %>

using System;
using System.Web;
using System.Data;
using System.Web.Script.Serialization;
using System.Collections.Generic;
using System.Collections;
using System.IO;

public class ShoppingCar : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        StreamReader reader = new StreamReader(context.Request.InputStream);
        string jsonString = HttpUtility.UrlDecode(reader.ReadToEnd());
        if (MSCL.Until.IsNullOrDBNull(jsonString))
        {            
            context.Response.Write("error");
        }
        else
        {
            jsonString = "{\"goods\": [" + jsonString + "]}";
            DataSet ds = JsonToDataSet(jsonString); //获取的购物车商品列表
            context.Response.Write("ok");
        }
        context.Response.End();
    }

    #region 解析Json成DataTable
    /// <summary>
    /// 解析Json成DataTable
    /// </summary>
    /// <param name="Json">Json字符串</param>
    /// <returns></returns>
    public static DataSet JsonToDataSet(string Json)
    {
        try
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable("shoppingcar");
            JavaScriptSerializer JSS = new JavaScriptSerializer();
            object obj = JSS.DeserializeObject(Json);
            Dictionary<string, object> datajson = (Dictionary<string, object>)obj;
            foreach (var item in datajson)
            {
                object[] rows = (object[])item.Value;
                foreach (var row in rows)
                {
                    Dictionary<string, object> valneed = (Dictionary<string, object>)row;
                    foreach (var needrow in valneed.Values)
                    {
                        #region
                        Dictionary<string, object> val = (Dictionary<string, object>)needrow;
                        DataRow dr = dt.NewRow();
                        foreach (KeyValuePair<string, object> sss in val)
                        {
                            if (!dt.Columns.Contains(sss.Key))
                            {
                                dt.Columns.Add(sss.Key.ToString());
                                dr[sss.Key] = sss.Value;
                            }
                            else
                                dr[sss.Key] = sss.Value;
                        }
                        dt.Rows.Add(dr);
                        #endregion
                    }
                }
            }
            ds.Tables.Add(dt);
            return ds;
        }
        catch
        {
            return null;
        }
    }
    #endregion

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
<!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>
    <title>读取本地购物车Cookie</title>
	<script type="text/javascript" src="../js/jquery-1.9.1.min.js" ></script> 
	<link href="./demo.css" rel="stylesheet"/>
	<link href="../css/order.css" rel="stylesheet"/>
	<script type="text/javascript" src="../js/cookie.js" ></script> 
	<script type="text/javascript" src="../js/jsorder.1.1.js" ></script> 
    <script type="text/javascript">
        //初始化配置
        var staticname = 'jsorder';
        var jsorderpre = 'jsorder_';
        var html = "";

        $(function () {
            if ($.cookie(staticname) != null && $.cookie(staticname) != '{}') {
                $("#list").html("");
                initdata = eval('(' + $.cookie(staticname) + ')'); //序列化成数组 
                $("body").data(staticname, initdata);
                //alert(JSON.stringify(initdata));
                $.each(initdata, function (index, item) {
                    //循环获取数据  
                    var Id = initdata[index]["productid"];
                    var Name = initdata[index]["name"];
                    var Price = initdata[index]["price"];
                    var Count = initdata[index]["count"];
                    var innerhtml = "<li id='" + jsorderpre + Id + "'>";
                    innerhtml += Id + "--" + Name + "--" + Price + " ";
                    innerhtml += "<a href='javascript:void(0)' style='text-decoration:none;' οnclick='subnum(" + Id + ")'> - </a><span id='count" + Id + "' >" + Count;
                    innerhtml += "</span><a href='javascript:void(0)' style='text-decoration:none;' οnclick='addnum(" + Id + ")'> + </a>";
                    innerhtml += "</li>"
                    html += innerhtml;
                });
                $("#list").append(html);
            }
        });

        function subnum(id) {
            var datejsorder = $("body").data(staticname);
            datejsorder[id]['count'] -= 1;
            if (datejsorder[id]['count'] > 0) {
                $("#count" + id).html(datejsorder[id]['count']);
            } else {
                $("#" + jsorderpre + id).remove();
                delete datejsorder[id]; //del json keyValue
            }
            savecookie(datejsorder);
        }

        function addnum(id, count) {
            var datejsorder = $("body").data(staticname);
            datejsorder[id]['count'] += 1;
            $("#count" + id).html(datejsorder[id]['count']);
            savecookie(datejsorder);
        }

        function savecookie(data) {
            var date = new Date();
            date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));
            $.cookie(staticname, JSON.stringify(data), {
                path: '/',
                expires: date
            });
        }

        function dosubmit() {
            var datejsorder = $("body").data(staticname);
            alert(JSON.stringify(datejsorder));
            //$("#result").html("json内容:" + JSON.stringify(data)).css('background', '#e0e0e0');
            jsonAjax("ShoppingCar.ashx", JSON.stringify(datejsorder), "text", getsuccess);
        }

        function getsuccess(o) {
            //alert(o);
            //成功后操作
        }

        function jsonAjax(url, param, datat, callback) {
            $.ajax({
                type: "post",
                url: url,
                data: param,
                dataType: datat,
                success: callback,
                error: function () {
                    jQuery.fn.mBox({
                        message: '恢复失败'
                    });
                }
            });
        };
         
    </script>
</head>
<body>
<div>
    <ul id="list">
    <li>购物车里暂无商品</li>
    </ul>

    <input type="button" value="确定,下一步" οnclick="dosubmit();" />
</div>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用 JavaScript 编写的打砖块游戏(附源代码)   项目:JavaScript 打砖块游戏(附源代码) 打砖块游戏是使用 HTML5、CSS 和 JavaScript 开发的简单项目。这款游戏是关于借助弹跳球和滑动平面来打破障碍。您可以玩游戏,直到能够打破所有砖块而不会将球掉到地上。玩家必须使用箭头键移动滑动平面。 游戏制作 该项目仅包含 HTML、CSS 和 JavaScript。谈到这款游戏的功能,用户必须移动滑动平面以使球反弹回来以打破砖块。球必须接触砖块才能将其打破,并且不应掉落到地上。这款游戏的 PC 控制也很简单。您只需使用左、右、上、下键根据要求移动滑动平面即可。如果玩家能够在 3 次生命中清除所有砖块,则获胜。 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,单击 index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
使用 JavaScript 编写的带有源代码的引文生成器   项目:使用 JavaScript 编写的引文生成器(附源代码) Quote Generator 是一个使用 HTML、CSS 和 JavaScript 开发的简单项目。这是一个简单的励志名言生成器迷你项目。当您单击“ 显示另一个名言” 按钮时,每次单击时您都会看到不同的励志名言。这个项目是一个简单的 JavaScript 项目,用于随机显示励志名言。此外,您可以看到背景颜色随着名言的变化而变化。 关于该项目 这个生成器是一个简单有趣的项目,仅包含 HTML、CSS 和 JavaScript。在这里,用户必须单击“ 显示另一个引文” 按钮,引文就会出现,背景颜色也会发生变化。此外,该项目还包含大量 JavaScript,用于对项目的某些部分进行验证。 如何运行该项目? 要运行此项目,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox  ,以获得更好的性能。要执行该项目,首先,通过单击 index.html 文件在浏览器中打开该项目。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

smartsmile2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值