检查AJAX响应数据是否为空或无效,而不是在输出中显示

时间:2017-08-19 08:02:37

标签: javascript ajax nullable backbone.validation.js

这是ajax函数,我希望当数据为nullundefined而不是输出(#access element)时显示为空"" (如果为null或未找到,则不保存输出中的任何数据)

  $(function(){

    $('#userId').on('keyup', function () {
      var value=$(this).val();
      $.ajax('/projectname/admin/getUserAccess/' + value,
        {
          dataType: 'JSON',
          success: function(data){

              var str = data.access.replaceAll(/\|/g, ',');
              var result = str.substring(1, str.length - 1);

              $("#access").val(result);

          }
        });
    });
  });

3 个答案:

答案 0 :(得分:0)

如果数据存在与否,只需添加一个条件来检查

If(data) {
    var str = data.access.replaceAll(/\|/g, ',');
    var result = str.substring(1, str.length - 1);

    $("#access").val(result);
}

答案 1 :(得分:0)

我建议添加一个简单的通用函数来检查空白/未定义,因为这对项目的其他部分也很方便。通用函数如下: -

function isEmpty(value) {//Function to check if value is Empty or Null
              switch (typeof(value)) {
                case "string": return (value.length === 0);
                case "number":
                case "boolean": return false;
                case "undefined": return true;
                case "object": return !value ? true : false; // handling for null.
                default: return !value ? true : false
              }
            }

然后按如下方式更新您的成功: -

success: function(data){
     if(isEmpty(data)){
       $("#access").html(data); //Notice it is Html and not val as you want data displayed
     }else {
       window.alert('Nothing Returned');//If at all you want an Alert
       $("#access").html('');//Sets the $("#access") with nothing to display
     }

我希望这能解决障碍

答案 2 :(得分:0)

感谢所有评论和回答我了解更多其他答案:) 我添加了行$("#access")。val("")并修复了问题。

      success: function(data){
          $("#access").val("");
          var str = data.access.replaceAll(/\|/g, ',');
          var result = str.substring(1, str.length - 1);

          $("#access").val(result);

      }