我基本上有一个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 。
答案 0 :(得分:4)
您可以返回一个空对象来表示对象中没有数据:
return '{}';
或者,如果您的Javascript代码需要一个数组,则返回一个空数组:
return '[]';
答案 1 :(得分:1)
运行一个简单的
if(isset($retunValue)){
//code
}
检查它以检查它是否设置。
你也可以试试
if(!empty($returnValue)){
//code
}
在您的if代码中,您可以将其设置为符合您需要的任何内容以供进一步使用。如果它不需要你可以忽略它,只是将你的函数传递回来,不会引发错误。
答案 2 :(得分: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);
答案 3 :(得分: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上检查了这个,它似乎工作正常。