Я разрабатываю небольшой бэкэнд-сервис / приложение с помощью Spring Boot и некоторого jQuery / AJAX.
Недавно при тестировании функциональности администратора я столкнулся со странной проблемой, связанной с кодом, приведенным ниже:
function updateUserRow(id) {
$.get(ajaxUrl + id, function (data) {
$('.userPlaceBtns').empty();
$('.userArticleBtns').empty();
$.each(data, function (key, value) {
form.find("textarea[name='" + key + "']").val(value);
form.find("input[name='" + key + "']").val(value);
form.find('input:checkbox').prop(value ? 'checked' : '');
if(key == 'placeIds' && value.length != 0){
for(i = 0; i < value.length; i++) {
$('<button/>', {
text: value[i],
id: 'btn_place_'+i,
click: function () {
inspectOwnedPlace(value[i]);
}
}).appendTo('.userPlaceBtns');
}
}
if(key == 'articleIds' && value.length != 0){
for(i = 0; i < value.length; i++) {
$('<button/>', {
text: value[i],
id: 'btn_article_'+i,
click: function () {
inspectOwnedArticle(value[i]);
}
}).appendTo('.userArticleBtns');
}
}
});
$('.load-bar').hide();
$('#userEditRow').modal();
});
}
Так что, помимо заполнения данных модальных форм, эта функция помогает мне перебирать пользовательские данныеи поместите кнопку на подготовленные div
с для каждого из этих данных.
Странные вещи случаются, когда я пытаюсь проверить связанные с пользователем места или статьи с $.get
с сервера:
function inspectOwnedPlace(id){
console.log(id);
var intId = parseInt(id);
console.log(placesAjaxUrl + intId);
$.get(placesAjaxUrl + intId, function (data) {
var placeForm = $(".ownedPlaceForm");
$.each(data, function (key, value) {
placeForm.find("textarea[name='" + key + "']").val(value);
placeForm.find("input[name='" + key + "']").val(value);
});
$('#inspectOwnedPlaceModal').modal();
});
}
Проблема
По некоторым причинам, в 50-70% случаях я получаю NumberFormatException
на стороне сервера из-за NaN
, поступающего с запросом сервера.Но в НЕКОТОРЫХ случаях это определенно работает, как и ожидалось!
Важно то, что: текст на сгенерированных кнопках ВСЕГДА отображается так, как ожидалось, поэтому я могу сделать вывод, что сервер всегда выдает релевантные неиспорченные данные спереди и что-то в коде JS ведетк частым NaN
исключениям, когда я пытаюсь запросить релевантные пользователю данные по id в качестве следующего шага.
Вот скриншот случая, когда я сталкиваюсь с этой проблемой (вкладка браузера с консолью разработчика) для лучшего понимания:
Итак, здесь я получаю NumberFormatException
сервера из-за NaN
вместо целого числа.
ЧтоЯ попытался:
- обрабатывать идентификаторы, так как они по умолчанию не используются как функция usig
parseInt()
; - обрабатывать идентификаторы как строки и анализировать их как текст.
Мне просто интересно, что может привести к непредсказуемым, несистемным NaN
s, которые, скорее всего, являются "испорченными целыми числами" в контексте моего текущего кода.Заранее спасибо!