我遇到了一个问题。当我在Ajax请求上发送Json文件时,所有参数都以适当的格式显示在URL上,除了带有空格的字符串。我收到了'%20'接受' +'。 我该怎么办?
$.ajax({
type: "GET",
url: myUrl,
data: data,
headers: {
'Content-type': 'application/x-www-form-urlencoded'
},
dataType: "json",
success: function (result) {
//Do thomething
},
error: function () {
}
});
数据的Json格式,如:
data
{
param1:1,
param2:2,
param3:"Hello world"
}
在显示的网址
¶m1=1¶m2=2¶m3=Hello%20world
并且渴望结果应该是:
¶m1=1¶m2=2¶m3=Hello+world
问候。
答案 0 :(得分:3)
您可以使用jQuery.param
和String.prototype.replace
来实现目标:
首先,使用以下命令将对象转换为查询字符串的序列化表示:
var params = jQuery.param(data);
然后,使用%20
将所有+
替换为String.prototype.replace
:
params = params.replace('%20', '+');
详细了解jQuery.param和String.prototype.replace
希望它有所帮助。
var params = jQuery.param({
param1: 1,
param2: 2,
param3: "Hello world"
}).replace('%20', '+');
console.log(params);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>