jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
来源: 阅读:1112 次 日期:2016-06-18 13:51:46
温馨提示: 小编为您整理了“jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)”,方便广大网友查阅!

这篇文章主要介绍了jQuery购物车插件jsorder用法,结合实例形式分析了购物车jsorder插件基于ajax与后台交互的相关技巧,需要的朋友可以参考下

本文实例讲述了jQuery购物车插件jsorder用法。分享给大家供大家参考,具体如下:

代码如下:

<!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;' onclick='subnum(" + Id + ")'> - </a><span id='count" + Id + "' >" + Count;

          innerhtml += "</span><a href='javascript:void(0)' style='text-decoration:none;' onclick='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="确定,下一步" onclick="dosubmit();" />

</div>

</body>

</html>

希望本文所述对大家jQuery程序设计有所帮助。

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map