现在的需求:
用JavaScript 控制POST的数据内容并跳转到B页面,类似ExtJS的standardSubmit功能
需求决定我们不能在页面上使用form来提交数据.因为提交的数据是页面上几个Div的全部HTML内容(实际上是富文本编辑器).使用jQuery的.html()
方法取得这些HTML内容.
现在想到的思路是使用jQuery 在内存中建立一个form对象,然后调用这个对象的submit方法
$.extend({
StandardPost:function(url,args){
var form = $("<form method='post'></form>"),
input;
form.attr({"action":url});
$.each(args,function(key,value){
input = $("<input type='hidden'>");
input.attr({"name":key});
input.val(value);
form.append(input);
});
form.submit();
}
});
调用:
$.StandardPost('url/path/req',{arg0:'arg0',arg1:'arg1'});
上面这段代码有兼容性问题,在IE低版本和火狐下不通过,需要在submit前将form.appendTo(document.body),否则无法提交且不会报错,submit后应该从body中remove此结点。另建议给form加上display:none防止影响展现,最终代码如下:
$.extend({
StandardPost:function(url,args){
var body = $(document.body),
form = $("<form method='post'></form>"),
input;
form.attr({"action":url});
$.each(args,function(key,value){
input = $("<input type='hidden'>");
input.attr({"name":key});
input.val(value);
form.append(input);
});
form.appendTo(document.body);
form.submit();
document.body.removeChild(form[0]);
}
});