jQuery在Ajax请求

时间:2018-06-06 10:58:06

标签: javascript jquery ajax spring-boot nan

我使用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异常。

以下是我遇到此问题(带有开发控制台的浏览器标签页)的案例截图,以便更好地理解:

enter image description here

所以,在这里我得到服务器的NumberFormatException,因为NaN而不是整数。

我尝试了什么:

  • 默认情况下处理ID不是usig parseInt()函数;
  • 将id视为字符串并将其解析为文本。

我只是想知道在我当前的代码中是什么导致不可预测的,非系统性的NaN,更可能是“被破坏的整数”。提前谢谢!

0 个答案:

没有答案