js的form表单提交url传参数(包含+等特殊字符)的两种解决方法

JavaScript026

js的form表单提交url传参数(包含+等特殊字符)的两种解决方法,第1张

方法一:(伪装form表单提交)

linkredwin

=

function(A,B,C,D,E,F,G){

var

formredwin

=

document.createElement("form")

formredwin.method

=

'POST'

document.body.appendChild(formredwin)

formredwin.action

=

"http://www.A.com/A.wiki?A="

+encodeURI(A)

+

"&B="

+encodeURIComponent(B)

+

"&C="

+encodeURI(C)

+

"&D="

+encodeURI(D)

+

"&E="

+encodeURI(E)

+

"&F="

+encodeURI(F)

+"&G="+encodeURI(G)

formredwin.submit()

formredwin.parentNode.removeChild(formredwin)

}

方法二:

1.

+

URL

中+号表示空格

%2B

2.

空格

URL中的空格可以用+号或者编码

%20

3.

/

分隔目录和子目录

%2F

4.

?

分隔实际的

URL

和参数

%3F

5.

%

指定特殊字符

%25

6.

#

表示书签

%23

7.

&

URL

中指定的参数间的分隔符

%26

8.

=

URL

中指定参数的值

%3D

以上这篇js的form表单提交url传参数(包含+等特殊字符)的两种解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

下面是用js动态创建form然后进行post提交的方式,参数url是表单提交的去向,参数params是给去向传递的参数(JSON结构),参数target设置何处打开链接文档(可选):

function postcall( url, params, target){

var tempform = document.createElement("form")

tempform.action = url

tempform.method = "post"

tempform.style.display="none"

if(target) {

tempform.target = target

}

for (var x in params) {

var opt = document.createElement("input")

opt.name = x

opt.value = params[x]

tempform.appendChild(opt)

}

var opt = document.createElement("input")

opt.type = "submit"

tempform.appendChild(opt)

document.body.appendChild(tempform)

tempform.submit()

document.body.removeChild(tempform)

}

可以手动构建一个FormData进行表单提交,代码如下:

var form = new FormData()

//添加参数

form.append('name', 'jack')

form.append('age', 20)

//使用xmlhttprequest发起请求

var xhr = new XMLHttpRequest()

xhr.open('post', '这里添上请求的url', true)

xhr.onreadystatechange = function() {

    if(xhr.readyState == 4) {

        //成功

    }

}

//执行请求

xhr.send(form)