Appearance
项目需求:
选课界面,选择多个课程添加到购物车计算总价。添加到购物车的课程,点击“提交结算”跳转到订单确认列表,当前界面要呈现上个界面选择的课程,包括:课程名称,课程价格,课程班级等等。
解决方式:
使用 get
方式传参,该方法行不通。因为浏览器 url
承载内容较多况且也有限制大小。所以使用 post
方式提交数据,在下个界面接受上个界面传来的数据列表。
使用 post
提交,不能使用 jQuery
自带封装好的 post
方式提交数据。既然这样,得自己封装一个 post
提交数据。
步骤:
使用
extend
封装一个post
方法。该
post
方法传入url
参数和args
参数,其中url
是要跳转到下个界面的路径;args
是传入的数据,比如这里是添加到购物车的课程。声明
from
,input
变量;并且设置from
的url
地址。遍历
args
参数,把每一条数据的具体值,绑定到input
上面并设置type='hidden'
不可见。遍历结束,
input
追加到from
上面;from
追加到body
上面。设置
from
提交,提交成功后,自动销毁。
完整代码:
$.extend({
StandardPost:function(url, args) {
var form = $("<form method='post' style='display:none'></form>"), input;
form.attr({ "action":url });
$.each(args,function(key2,value2) {
$.each(value2,function(key,value) {
input = $("<input type='hidden'>");
input.attr({ "name":'objectArray['+key2+']['+key+']'});
input.val(value);
form.append(input);
});
});
form.appendTo($('body'));
form.submit();
form.remove();
}
});
$.extend({
StandardPost:function(url, args) {
var form = $("<form method='post' style='display:none'></form>"), input;
form.attr({ "action":url });
$.each(args,function(key2,value2) {
$.each(value2,function(key,value) {
input = $("<input type='hidden'>");
input.attr({ "name":'objectArray['+key2+']['+key+']'});
input.val(value);
form.append(input);
});
});
form.appendTo($('body'));
form.submit();
form.remove();
}
});