2

我基本上有一个 ajax 函数,它从数据库中获取最新帖子,我想知道的是,如果没有找到数据,我应该返回什么,因为返回 null 似乎是 firebug 的问题?

php代码

function getLatestChat(){
   global $session, $form;

   $data = $session->getLatestChat(mysql_real_escape_string($_REQUEST['withUser']),
      mysql_real_escape_string($_REQUEST['ignoreMessages']));

   if($data){//successful
      echo json_encode($data);   
   }        

   return;
}

jQuery代码

function getLatestChat(){
   var ignoreMessagesArr = $(".chatID").map(function(){ return this.value;}).get().join(",");

   $.ajax({
      traditional: true,
      dataType: "json",
      type: "GET", url: "include/process.php", 
      data:{
      getLatestChat: "true",
         withUser: currentCCID,
     ignoreMessages: ignoreMessagesArr
      },
      success: function(data){
         $.each(data, function(i, elem){
        $('.chat-latestContainer').append(elem.value);
     });             
      }
   }
});   

目前该方法要么返回$data对象,要么返回null

4

4 回答 4

4

您可以返回一个空对象来表示对象中没有数据:

return '{}';

或者,如果您的 Javascript 代码需要一个数组,则返回一个空数组:

return '[]';
于 2012-04-22T19:15:48.060 回答
1

运行一个简单的

if(isset($retunValue)){
 //code
} 

检查它以检查它是否设置。

你也可以试试

if(!empty($returnValue)){
  //code
}

在您的 if 代码中,您可以将其设置为适合您需要的任何内容以供进一步使用。如果不需要它,您可以忽略它,只需将不会引发错误的东西传回您的函数。

于 2012-04-22T19:19:06.087 回答
0

重写为(例如):

function getLatestChat($session, $form){
   $ret = {};

   $data = $session->getLatestChat(mysql_real_escape_string($_REQUEST['withUser']),
      mysql_real_escape_string($_REQUEST['ignoreMessages']));

   if($data){//successful
      $ret = json_encode($data);   
   }        

   return $ret;
}

echo getLatestChat($session, $form);
于 2012-04-22T19:19:48.327 回答
0

在这种情况下,我倾向于明确说明响应类型,但也许有更成熟的做法......

<?php

header('Content-Type: application/json');

// ... do stuff here: fetch data, json_encode etc.

// No data, no response
if (strlen($json) === 0) { // assuming we json encoded the data above
    header('HTTP/1.1 204 No Content');        
    exit();
}

// everything is ok
header('HTTP/1.1 200 OK');
echo $json;

我刚刚在 FF11 和最新的 Firebug 上检查了这个,它似乎工作正常。

于 2012-04-22T19:36:39.890 回答