如何在网页中POST任意内容并跳转

之前是用jQuery的post()方法实现向服务器POST数据.
现在新需求需要呈现服务器返回的HTML页面.这个呈现是类似于普通form提交后跳转的过程.
解释:
使用表单进行POST的方法
点击Submit就可以向"/B"POST数据并跳转到B页面
Ajax方法
$.post("/B",{"foo":"bar"})
这种方法能够POST自定义数据但是不能够跳转到B页面
现在的需求:
用JavaScript控制POST的数据内容并跳转到B页面,类似ExtJS的standardSubmit功能
需求决定我们不能在页面上使用form来提交数据.因为提交的数据是页面上几个Div的全部HTML内容(实际上是富文本编辑器).使用jQuery的.html()方法取得这些HTML内容.
现在想到的思路是使用jQuery在内存中建立一个form对象,然后调用这个对象的submit方法
form=$("
")
str=$("#bar").html()
input=$("").val(str).attr('name','bar')
form.append(input)
//....继续添加字段
form.submit()
上面这种方法虽然能用,但是感觉很丑,有没有更好的方法?
四季花海
浏览 593回答 2
2回答

慕哥6287543

扩展:$.extend({StandardPost:function(url,args){varform=$(""),input;form.attr({"action":url});$.each(args,function(key,value){input=$("");input.attr({"name":key});input.val(value);form.append(input);});form.submit();}});调用:$.StandardPost('url/path/req',{arg0:'arg0',arg1:'arg1'});

慕莱坞森

$.extend({StandardPost:function(url,args){varform=$(""),input;form.attr({"action":url});$.each(args,function(key,value){input=$("");input.attr({"name":key});input.val(value);form.append(input);});form.submit();}});这段代码有兼容性问题,在IE低版本和火狐下不通过,需要在submit前将form.appendTo(document.body),否则无法提交且不会报错,submit后应该从body中remove此结点。另建议给form加上display:none防止影响展现,最终代码如下:$.extend({StandardPost:function(url,args){varbody=$(document.body),form=$(""),input;form.attr({"action":url});$.each(args,function(key,value){input=$("");input.attr({"name":key});input.val(value);form.append(input);});form.appendTo(document.body);form.submit();document.body.removeChild(form[0]);}});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript