用XML和ASP实现一个灵活的购物车

ZDNet软件频道 时间:2003-07-02 作者:ZDNet China |  我要评论()
本文关键词:
实现虚拟购物车(shopping cart)的方法并不唯一。最近我恰好改写了一个传统的ASP购物车,目标是在保留了它原有外观的基础上让它变得更灵活、速度更快。现在,请允许我介绍一下在这个过程中我所遇到的问题以及我是如何提高原有设计的。
本文译自Builder.com,未经许可请勿转载实现虚拟购物车(shopping cart)的方法并不唯一。最近我恰好改写了一个传统的ASP购物车,目标是在保留了它原有外观的基础上让它变得更灵活、速度更快。我决定利用XML开发一个跨浏览器的解决方案。现在,请允许我介绍一下在这个过程中我所遇到的问题以及我是如何提高原有设计的。

原有的购物车

由于原有的购物车是为一组指定的客户定做的,因此它的使用更多的依赖于使用训练,而没有很好的易用性。除了完全清空购物车之外,没有任何机制来修改你放在购物车里的内容。因此一旦你在购物车中放置的物品或者物品数量有误的话,你不得不重新开始购物过程,只有这样才可以修正这个错误。

除了界面之外,原有的购物车好像没有其它的优点。它只能显示出有限的行数,客户要查看未显示的条目时,必须向前或者向后翻页(即导航)。这个问题归因于购物车中的所有内容都保存在基于ASP会话ID的表格中。当客户翻查购物车中的项目时,必须执行一个查询。此外,如果会话期结束,购物车的内容就会保存到表格中去,除非你手动删除它。

新的设计方法

我并不想重复已经发生的错误,因此新的购物车是基于XML会话(XML-session)而不是基于表格。这种方法有几个优点。首先,整个购物车存储在客户端的一个XML数据岛中(如清单A所示)。这就消除了简单的导航对表格的查询需求。相反,用到了MozillaDSO()xmlPage()函数。

除了导航之外,xmlPage()方法还提供了老购物车所没有提供的功能——修改数量和删除商品种类的能力。这是因为它用到了两个XML数据岛:一个绑定了(bound)、另一个则没有,绑定数据岛的改变在更新之前并不会影响到未绑定的数据岛。一旦点击更新按钮,就会有一个机制,例如XMLHTTP,把改变传递给server。如果因为某些原因造成你不能完全信任微软Internet Explorer或者Mozilla的XMLHTTP的话,你可以用一个隐藏框架(即iframe)和表单以及输入框来实现同样的功能。清单B给出了更新函数的JavaScript。

我在同一个句子中用到了Mozilla和XMLHTTP,这里有书面材料可以证明Mozilla支持XMLHTTP。尽管Mozilla的XMLHTTP的语法与Internet Explorer的有一点点不同,少量JavaScript不能得到处理是无关紧要的。清单C给出了A所示的完整的客户端解决方案。

图A


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134