2012-08-09 96 views
0

我有这个代码的问题:jQuery和Ajax请求的数据问题

setInterval(function() { 
     var timed = $("#chMsgCont").find(".chatMsg:last-child"); 
     var timee = timed.attr("data"); 
     $.ajax({ 
      url: "./ajax/checknew.php", 
      data: {timestamp: timee}, 
      success: function(data) { 
       $("#chMsgCont").append(data); 
       if(data != null) { 
       var div = $('#chMsgCont'); 
       var o = div.offset().top; 
       div.scrollTop(o + 12302012); 
       } 
      } 
     }); 
    },1000); 

即使数据为空,$("#chMsgCont)向下滚动,为什么呢?

+1

一个空字符串不等于空 – Musa 2012-08-09 21:50:27

+0

也许数据仅仅是空的或未定义的,不为空以便它能够传递 – 2012-08-09 21:50:31

+0

可以是数据是空字符串?? – Amareswar 2012-08-09 21:51:44

回答

1

试试这样说:

if(data) 

或者这样说:

if(data != null && data != "") 

基本上,if(data)被认为是数据是假的在这些情况下:

  • 数据是 “” 或 ''=>空字符串

  • 数据为假

  • 数据为空

  • 数据未定义

+0

谢谢,它的工作原理:D – Denn 2012-08-09 22:02:01

+0

不客气:) – sedran 2012-08-09 22:20:44

0

data只是空的,而不是null(未定义)所以它会通过,尝试返回一些额外的PHP文件。

我喜欢做在PHP端以下内容:

/* suppose that i am evaluating an insert to my DB */ 
print(1); //if success 

print(0); //if error 
在JavaScript端

那么,这样做:

if(data == 1) //means success 

或只是做,如果你没有在PHP侧评估下面的内容:

if(data != null && data != '') 
+0

@jeff不好的英语,我纠正了我想说的 – 2012-08-09 21:55:56