ajax post截断前导零

时间:2015-06-15 21:53:56

标签: 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) {
        var errmsg = JSON.stringify(msg);
        alert("message: " + errmsg);
    }
});

InputTextBox中的值具有前导0,但是当它被发布到url时,前导0被截断。

3 个答案:

答案 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>