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

この状況では、応答タイプを明示的に述べる傾向がありますが、確立されたプラクティスがもっとあるかもしれません...

<?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 に答える
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 に答える