Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax后期截断前导零';s_Javascript_Jquery_Ajax - Fatal编程技术网

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规范。(如果在无效号码上没有失败)