我有以下代码:
$.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被截断。
答案 0 :(得分:2)
将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
,在解析时,它将被转换回字符串而不是将丢失前导零的数字。
答案 1 :(得分: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的网络标签中显示数据已正确发送' 004&#39 ;. 请用服务器上的代码重新询问您的问题,因为问题不是客户端问题。 正如Kevin B所说,' 004'是根据JSON specification的类型数字 所以,如果你想要零,并想在服务器上使用JSON库发送数据为'" 004"'或使用JSON.stringify(' 004')。
答案 2 :(得分:0)
在我的 ajax 调用中删除 contentType: "application/json",
为我解决了这个问题
原因:-
contentType: "application/json",
将首先将值转换为数字,因为它会尝试将您的数据解析为 JSON。从您的 ajax 调用中删除此行将停止解析数据。
注意:解析不仅会发生在您正在POST
处理的数据中,还会在您使用 GET
方法时解析您网址中的查询字符串< /p>