当没有从数据库返回结果时,这个javascript会激活吗?

时间:2013-04-19 09:40:34

标签: javascript jquery

我有以下代码:

 $.post('get_as_12', {data:selectedObj.value},function(result) {
 alert(result[0]) ;

      if(result[0] > 0) {
          $('#h12_1').attr('checked','checked');
          alert('12-1');
       } else {
          $('#h12_1').removeAttr('checked');
          alert('12-2');
      }
 }); 

get_as_12是一个MySQL查询。

当存在数据库结果时,会正确触发警报alert(result[0]) ;。如果没有结果且返回值为NULL,我如何才能使警报仍然触发。除此之外,我如何得到else语句: $('#h12_1').removeAttr('checked');

提前致谢。

更新

 $.post('get_as_12', {data:selectedObj.value},function(result) {
 alert(result[0]) ;

      if(result[0].length > 0) {
          $('#h12_1').attr('checked','checked');
       } else {
          $('#h12_1').removeAttr('checked');
      }
 }); 

3 个答案:

答案 0 :(得分:2)

也许是这样的:

$.post('get_as_12', {data:selectedObj.value},function(result) {
    if(result != null && result[0] > 0) {
        $('#h12_1').attr('checked','checked');
        alert('12-1');
    } else {
        $('#h12_1').removeAttr('checked');
        alert('12-2');
    }
});

这会添加一项结果不是nullundefined的检查。如果您确定定义的结果将是一个至少包含一个元素的数组,那应该没问题。否则,您需要添加result.length > 0

的支票

答案 1 :(得分:1)

我认为你正在寻找结果的长度[0]

if(result && result[0].length > 0) {.......

我假设result [0]包含一个包含mysql查询结果的数组。使用length属性,您可以检查结果集是否为空,因此如果查询未返回结果,则应调用语句else-statement。

答案 2 :(得分:0)

我希望当服务器返回null响应时,$.post无法正确处理它以处理请求。

您可以尝试使用$.ajax,因为这样可以更好地处理和处理错误。

$.ajax({
    type: 'POST',
    url: 'get_as_12',
    data: {
        data:selectedObj.value
    },
    success: function(result){
        if(result != null && result[0] > 0) {
            $('#h12_1').attr('checked','checked');
            alert('12-1');
        } else {
            $('#h12_1').removeAttr('checked');
            alert('12-2');
        }
    },
    error: function(xhr, textStatus, error){
        console.log(xhr.statusText);
        console.log(textStatus);
        console.log(error);
        // or use alert to send user a message
    }
});

此处需要注意的关键事项是successerror处理程序。如果响应无效或服务器没有给出,则触发error

代码未经测试;因此可能需要进行更改。