如果jquery ajax返回数据为空,如何添加判断?

时间:2011-03-08 20:11:41

标签: jquery

我是学习jquery.ajax的新手。我想将一些数据从a.php粘贴到b.php。 这是我的代码:

a.php只会

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script language="javascript">
$(document).ready(function () {      
var params = "value=" + $('#send').text();   
$.ajax({        
     url:'b.php',        
     type:'post',                 
     dataType:'html',            
     data:params,  
     success:function(data){  $("#result").html($(data).html('#aa')); }
});
});
</script>
<body>
<div id="result"></div>//sometimes the return data is empty, so this part just return: <div="aa"></div>
<div id="send">apple</div>

b.php

<?php
echo '<div id="aa">';
//'.$_REQUEST['value'].' will put in some process here, but sometimes the return data is empty.
echo '</div>';
?>

如果<div id="aa"></div>为空,我如何以及在何处添加判断,在其间添加sorry, there is no result

所以在a.php中,信息会显示:<div id="result"><div id="aa">sorry, there is no result</div></div>

感谢。

3 个答案:

答案 0 :(得分:7)

首先,您应该始终返回数据/信息,而不是HTML标签或代码......您在HTML部分中执行此操作。

<?php
//send ONLY the data, best to send in JSON syntax
?>

然后你使用

$.ajax({        
     url:'b.php',        
     type:'post',                 
     dataType:'html',            
     data:params,  
     success: function(data) {  

         if(data.length == 0)
             $("#result").html("<span class='no-data'>No Data</span>"); 
         else
         {
             // Loop through the data and add it as, for example an <li> in a <ul>
         }

     }
});

答案 1 :(得分:0)

将您的AJAX调用更改为:

$(document).ready(function () {      
var params = "value=" + $('#send').text();   
$.ajax({        
     url:'b.php',        
     type:'post',                 
     dataType:'html',            
     data:params,  
     success:function(data){  
         $("#result").html($(data).html('#aa'));
        if ( $("#aa").html() == "" ) {
            $("#aa").html("sorry, there is no result");
       }
    }
});
});

答案 2 :(得分:0)

您的代码:

$("#result").html($(data).html('#aa'));

不正确。它会将data中包含的元素的内容设置为#aa

我想你想要:

function(data){  
    var $data = $(data);

    $data.html(function(i, html) {
        if(html === '') {
            return "sorry, there is no result";
        }
        return html;
    );

    $("#result").empty().append($data);
}

但仅仅返回结果文本而不是返回HTML会不会更容易?

所以在PHP中:

<?php
    echo getResultOfYourProcess();
?>

并在客户端:

$.ajax({        
     url:'b.php',        
     type:'post',                 
     dataType:'text',            
     data:params,  
     success:function(data){
         data = data === '' ? "sorry, there is no result" : data;
         $("#result").html(data); 
         // or $("#result").text(data); 
     }
});