2015-06-15 3 views
-1

У меня есть следующий код:Аякс после усечения ведущих нулей,

$.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

Что вы получаете как тело сообщения при просмотре запроса на вкладке сети? вы уверены, что это проблема на стороне клиента? –

+3

также, 'contentType:" application/json ",' не кажется правильным, вы не отправляете json, вы отправляете строку. (вероятно, там, где проблема возникает.) Большинство json parsers преобразуют строку '0005' в' 5', а строка '' 0005 '' '' 0005 "' –

+0

'String (123)' дает ' '123'', но 'String (0123)' (или больше 0s впереди) дает '' 83'', потому что он интерпретируется как восьмеричный. – maraca

ответ

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, который при разобраны, будут преобразованы обратно в строку, а не число, которое потеряет ведущие нули.

+0

Это сработало благодаря Кевину Б – user2227484

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». Пожалуйста, задайте свой вопрос с кодом на сервере, так как проблема не на стороне клиента. Так как Кевин Б отметил, что «004» - это числовое число в соответствии с JSON specification , поэтому, если вы хотите, чтобы нули и хотите использовать библиотеку JSON на сервере, отправили данные как «004» или используйте JSON.stringify ('004) «).

+0

Если вы отправляете '004' на сервер с приложением/json contentType, сервер должен преобразовать его в значение' 4', считая, что это следующие спецификации json. (если он не сбой по недопустимому номеру) –

Смежные вопросы