JavaScript动态生成Form提交

项目中,我们一般都是写上隐藏的form标签,用<a href="#" οnclick="..."/>来调用js函数,给form中表单要提交的内容赋值,然后submit提交。如果页面没有隐藏的form,我们可以用JavaScript动态生成Form提交,或者只有一个隐藏form,动态生成要传递的参数。

function post(url, params) {     
    var tempForm = document.createElement("form");     
    tempForm.action = url;     
    tempForm.method = "post";     
    tempForm.style.display = "none";     
    for (var x in params) {     
        var opt = document.createElement("textarea");     
        opt.name = x;     
        opt.value = params[x];     
        // alert(opt.name)     
        tempForm.appendChild(opt);     
    }     
    document.body.appendChild(tempForm);     
    tempForm.submit();     
    return tempForm;     
}
    
//调用方法   
post('login.do', {username : xxxx, password : yyyy});

function postParamAndOpenWindow(urlAndQuery){
    // 分割url和请求参数
    var pos = urlAndQuery.indexOf('?')
    var url = urlAndQuery.substring(0, pos);
    var query = urlAndQuery.substring(pos + 1);
    // 动态建立Form中的数据
    var tempForm = document.getElementById('tmpForm');
    tempForm.action = url;     
    tempForm.method = "post";
    var pairs = query.split("&"); 
        for(var i = 0; i < pairs.length; i++) {
            var pos = pairs[i].indexOf('=');
            if (pos == -1) continue;
            var argname = pairs[i].substring(0, pos);
            var value = pairs[i].substring(pos + 1);
            var opt = document.createElement("textarea"); 
            opt.name = argname;
            opt.value = value;
            tempForm.appendChild(opt);
        }
    tempForm.submitBtn.click();
    return tempForm;
}

//在页面处
<a href="#" οnclick="postParamAndOpenWindow("http://www.xxx.com/login?username=xxx&password=yyy');">

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值