【问题标题】:Check if AJAX response data is empty/blank/null/undefined/0检查AJAX响应数据是否为空/空白/null/undefined/0
【发布时间】:2019-12-17 08:34:52
【问题描述】:

我有什么:

我有查询数据库后返回 HTML 的 jQuery AJAX 函数。根据查询的结果,该函数将根据需要返回 HTML 代码或不返回任何内容(即空白)。

我需要什么:

我需要有条件地检查数据何时为空白。

我的代码:

$.ajax({
    type:"POST",
    url: "<?php echo admin_url('admin-ajax.php'); ?>",
    data: associated_buildsorprojects_form,
    success:function(data){
        if(!data){  
        //if(data="undefined"){
        //if(data==="undefined"){
        //if(data==null){
        //if(data.length == 0){
        //if ( data.length != 0 ){
        //if(data===0){
        //if(data==="0"){   
            alert("Data: " + data);
        }
    },
    error: function(errorThrown){
        alert(errorThrown);
        alert("There is an error with AJAX!");
    }               
});

我的问题:

我尝试了多种条件,但都没有正确检查数据。根据我的发现,空白警报消息并不意味着数据是

  1. 不存在
  2. 等于零
  3. 长度为零
  4. 未定义

如果这些都不是,我如何有条件地检查产生空白警报消息的数据?

【问题讨论】:

  • 返回 JSON 并使用标志。
  • $.trim 字符串首先删除空格。 if (!$.trim(data))
  • Learn how todebug JavaScriptalert 不是调试工具。正确记录值并检查其值。

标签: javascript jquery ajax null


【解决方案1】:

Felix Kling在问题的评论部分提供了以下正确答案:

if (!$.trim(data)){   
    alert("What follows is blank: " + data);
}
else{   
    alert("What follows is not blank: " + data);
}

【讨论】:

  • 我建议使用console.log(); 而不是alert();。这是更好的做法。如果您养成了提醒错误消息的习惯,您可能有一天会发现自己陷入了无限循环的警报框,并且无法关闭浏览器/程序。话虽这么说,很好的答案。
  • 如果我的data 是一个数组,我想分别处理空数组的情况怎么办?
  • @tHomas 那么你只需为空数组的情况添加条件
【解决方案2】:
//if(data="undefined"){

这是一个赋值语句,而不是比较。此外,"undefined" 是一个字符串,它是一个属性。检查是这样的:if (data === undefined)(不加引号,否则是字符串值)

如果未定义,您可能会返回一个空字符串。您也可以尝试检查 falsy 值,例如 if (!data)

【讨论】:

  • if (data == undefined) 有效。谢谢你的解释。按时间顺序被选为正确答案。
【解决方案3】:
if(data.trim()==''){alert("Nothing Found");}

【讨论】:

    【解决方案4】:

    这对我有用.. page.php 上的 PHP 代码

     $query_de="sql statements here";
     $sql_de = sqlsrv_query($conn,$query_de);
          if ($sql_de)
          {
            echo "SQLSuccess";
           }
             exit();
    

    然后AJAX代码如下

    jQuery.ajax({
                        url  : "page.php",
                        type : "POST",
                        data : {
                                buttonsave   : 1,
                                var1         : val1,
                                var2         : val2,
                                  },
                      success:function(data)
                               {
                         if(jQuery.trim(data) === "SQLSuccess")
                                       {
                               alert("Se agrego correctamente");
                              // alert(data);
                                          } else { alert(data);}
                                  },
                       error: function(error)
                               {
                        alert("Error AJAX not working: "+ error );
                                  } 
                   }); 
    

    注意:必须从 PHP 接收到单词“SQLSuccess”

    【讨论】:

    • 这不能回答问题。提问者明确地想知道如何测试正文中的无响应——而不是发送一些字符串。
    【解决方案5】:
    $.ajax({
        type:"POST",
        url: "<?php echo admin_url('admin-ajax.php'); ?>",
        data: associated_buildsorprojects_form,
        success:function(data){
            // do console.log(data);
            console.log(data);
            // you'll find that what exactly inside data 
            // I do not prefer alter(data); now because, it does not 
            // completes requirement all the time 
            // After that you can easily put if condition that you do not want like
            // if(data != '')
            // if(data == null)
            // or whatever you want 
        },
        error: function(errorThrown){
            alert(errorThrown);
            alert("There is an error with AJAX!");
        }               
    });
    

    【讨论】:

    • 代码很棒,但是对问题的一些解释以及如何解决它确实会有所帮助。
    • data != '' 可能会在空 ajax 返回时触发,因此评论建议不正确。几乎所有其他帖子都建议使用 trim() 函数。
    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 2021-12-13
    • 2019-01-23
    • 2020-03-11
    • 2012-12-13
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多