前端小菜鸟一名,用的框架多把form表单能够提交数据都给忘了哈哈,记录一下
这里是原本自己一个系统,然后通过调用自己系统的后台获取到打开另一个系统页面所需的参数(token那些),将这堆参数通过post请求的方式发送给另一个系统的单点登录接口,另一个系统进行验证和重定向,这样就可以免登陆进入另一个系统的页面。
而通过post请求的方式发送给另一个系统的单点登录接口,就是用form表单进行发送,下面是主要代码
// 第一个参数是另一个系统的单点登录接口
// 第二个参数是请求的方式
// 第三个参数是携带的参数,是一个对象
// 第四个参数是参数的格式,不填或者空字符串表示使用默认的application/x-www-form-urlencoded
// 第五个参数是打开页面的方式,不填表示在当前标签打开,‘_blank’表示在新标签中打开
function openPage(url, method, params, enctype, target) {
const dynamicForm = document.createElement('form')
dynamicForm.setAttribute('method', method)
dynamicForm.setAttribute('action', url)
if (enctype && enctype !== '') {
dynamicForm.setAttribute('enctype', enctype)
}
if (target) {
dynamicForm.setAttribute('target', target)
}
for (let paramName in params) {
let input = document.createElement('input')
input.setAttribute('type', 'hidden')
input.setAttribute('name', paramName)
input.setAttribute('value', params[paramName])
dynamicForm.appendChild(input)
}
document.body.appendChild(dynamicForm)
dynamicForm.submit()
document.body.removeChild(dynamicForm)
}
// 调用的例子
openPage('www.abc.com/xxx', 'post', {redirect_uri:'xxxx',session_token:'xxx'}, 'application/json', '_blank')