我使用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
。但在 SOME 的情况下,它肯定会按预期工作!
重要的是:生成的按钮始终上的文字按预期显示,因此我可以得出结论,服务器总是提供相关的,
当我尝试通过id请求用户相关数据作为下一步时,JS代码中的非破坏数据和JS代码中的某些内容会导致频繁的NaN
异常。
以下是我遇到此问题(带有开发控制台的浏览器标签页)的案例截图,以便更好地理解:
所以,在这里我得到服务器的NumberFormatException
,因为NaN
而不是整数。
我尝试了什么:
parseInt()
函数; 我只是想知道在我当前的代码中是什么导致不可预测的,非系统性的NaN
,更可能是“被破坏的整数”。提前谢谢!