js中创建form表单
有的時(shí)候需要在js中創(chuàng)建form向controller提交數(shù)據(jù),下面是在工作中遇到的一些問(wèn)題和解決辦法:
簡(jiǎn)單的用jquery創(chuàng)建form:
var form = $("<form method = 'post'></form>"); var input = $("<input type='hidden' name='name' value="+data+">"); form.append(input); form.submit;函數(shù)封裝提交:
function StandardPost (url,args) {var form = $("<form method='post'></form>");form.attr({"action":url});for (arg in args){var input = $("<input type='hidden'>");input.attr({"name":arg});input.val(args[arg]);form.append(input);}form.submit(); }其中args為格式:{key:value,key1:valye2…},可以一個(gè)參數(shù)一個(gè)參數(shù)傳,也可以直接傳一個(gè)jsonString, 在controller中再轉(zhuǎn)化為map,個(gè)人更喜歡后一種方法,直接用json的序列化工具(jsonmapper之類),反序列為map,再取值。
上面兩種都是jquery創(chuàng)建form,在chrome下可正常使用,但是在firefox下不行,百度之,發(fā)現(xiàn)原因是:
經(jīng)過(guò)研究發(fā)現(xiàn),FireFox在提交頁(yè)面表單時(shí)要求頁(yè)面有完整的標(biāo)簽項(xiàng),即<html><head><title></title></head><body><form></form</body</html>這樣的標(biāo)簽結(jié)構(gòu)
解決方法很簡(jiǎn)答,給把新建的form添加到一個(gè)現(xiàn)存節(jié)點(diǎn)即可。
上面的函數(shù)修改后代碼如下:
另外還有一個(gè)問(wèn)題,就是關(guān)于提交數(shù)據(jù)后是從本頁(yè)面跳轉(zhuǎn)還是新打開(kāi)頁(yè)面
可參見(jiàn): http://blog.csdn.net/natian306/article/details/21527369
總結(jié)
以上是生活随笔為你收集整理的js中创建form表单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java设计模式(六)----适配器模式
- 下一篇: 一个前端的职业轨迹