Javascript ajax后期截断前导零';s
我有以下代码:Javascript ajax后期截断前导零';s,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有以下代码: $.ajax({ type: "Post", url: 'http://example.com/jambo', contentType: "application/json", data: String(' ' + $('InputTextBox').val()), success: function (data) { alert("success"); }, error: function (msg) {
$.ajax({
type: "Post",
url: 'http://example.com/jambo',
contentType: "application/json",
data: String(' ' + $('InputTextBox').val()),
success: function (data) {
alert("success");
},
error: function (msg) {
var errmsg = JSON.stringify(msg);
alert("message: " + errmsg);
}
});
InputTextBox中的值具有前导0,但将其发布到url时,前导0将被截断 测试此页面上的代码
$.ajax({
type: "Post",
url: '/test',
contentType: "application/json",
data: String(' 004'),
success: function (data) {
alert("success");
},
error: function (msg) {
var errmsg = JSON.stringify(msg);
alert("message: " + errmsg);
}
});
显然会提醒404页面,但在Chrome和Firefox的net选项卡中,显示数据正确发送到“004”。
请使用服务器上的代码重新询问您的问题,因为问题不在客户端。
正如Kevin B所指出的,“004”是根据
因此,如果您想要零,并且想要在以“004”的形式发送数据的服务器上使用JSON库,或者使用JSON.stringify('004')。在向服务器发送JSON时,应该使用内置的JSON.stringify方法来创建JSON,而不是手动创建
$.ajax({
type: "Post",
url: 'http://example.com/jambo',
contentType: "application/json",
data: JSON.stringify($('InputTextBox').val()),
success: function (data) {
alert("success");
},
error: function (msg) {
var errmsg = JSON.stringify(msg);
alert("message: " + errmsg);
}
});
这将导致发送
“0005”
,而不是0005
,解析后将转换回字符串,而不是丢失前导零的数字。在我的ajax调用中删除contentType:“application/json”
,为我解决了这个问题
原因:-
contentType:“application/json”,
将在尝试将数据解析为json时首先将值转换为数字。从ajax调用中删除这一行将停止数据解析
注意:解析不仅会发生在您正在发布的数据中,还会在您使用
GET
方法查看网络选项卡中的请求时解析URL中的查询字符串?您确定这是客户端问题吗?另外,contentType:“application/json”
似乎不正确,您没有发送json,而是发送了一个字符串。大多数json解析器将字符串0005
转换为5
,将字符串“0005”
转换为“0005”
字符串(123)
给出'123'
,但字符串(0123)
(或前面多个0)给出'83'
,因为它被解释为八进制。如果您使用application/json contentType将'004'发送到服务器,则服务器应将其转换为值4
,假设它符合json规范。(如果在无效号码上没有失败)