请考虑以下事项:
<?php
//daytime_check.php
$is_daytime = false;
if ($is_daytime) {
echo '1';
} else {
echo '0';
}
?>
=============================================== ===================================
// javascript/jQuery
$.ajax({
type: 'POST',
url: 'daytime_check.php',
success: function(response) {
if(response == false) {
alert('Goodnight, brother');
} else {
alert('Day\'s a wastin, brother');
}
},
error: function() {
//handle error
}
});
这就是我迄今为止处理我的AJAX的PHP脚本的响应。我希望有人可以给我一些更好的方法提示,因为这种方法感觉非常笨重。
特别笨重的是在JS端处理PHP脚本输出的“过滤”。例如:
在这种情况下,PHP的响应将是JS var response ='0'
。现在,我们不能简单地使用JS中的if (!response)...
来过滤,因为显然!response
评估为false
,而有趣的是,response == false
评估为true
。我想,与类型杂耍有关。
由于我可以从PHP返回内容的唯一方法是使用文本(echo
语句),当我到达JS端时,我无法返回正确的true / false值来进行过滤。有没有更好的方法来解决这个问题?
我希望这至少有点意义。
答案 0 :(得分:1)
您仍然可以返回任何您想要的类型。只需使用JSON响应。
// you can return what ever you want via JSON
die(json_encode(array(
'isDateTime' => $is_datetime,
'message' => 'Some optional message to display',
'timestamp' => time()
)));
这将输出此字符串:
{"isDateTime":false,"message":"Some optional message to display","timestamp":1332792739}
在客户端,jQuery将解析此响应:
$.ajax({
type: 'POST',
url: 'daytime_check.php',
dataType: 'json',
success: function(response) {
if (response.isDateTime) { ... }
// typeof response.isDateTime == 'boolean'
// alert(response.message)
},
error: function() {
//handle error
}
});
答案 1 :(得分:0)
如果您只需要在成功处理程序中显示消息,那么为什么不自己返回消息呢?
<?php
//daytime_check.php
$is_daytime = false;
if ($is_daytime) {
echo "Day's a wastin', brother";
} else {
echo "Goodnight, brother";
}
?>
$.ajax({
type: 'POST',
url: 'daytime_check.php',
success: function(response) {
alert(response);
},
error: function() {
//handle error
}
});
答案 2 :(得分:0)
这是一个聪明的前同事提供的一个简洁的解决方案。
以下列方式从PHP脚本返回值:
<?php
// To return an error
echo json_encode(
array(
'success' => false,
'message' => '[error message here]',
)
);
// To return a successful response
echo json_encode(
array(
'success' => true,
'response' => [return value here],
)
);
这样,我们可以轻松地在JS方面做逻辑:
$.ajax({
type: 'POST',
url: 'ajax_example.php',
success: function(response) {
response = JSON.parse(response);
if (!response.success) {
alert(response.message);
} else {
console.log(response.response);
}
},
error: function() {
//handle error
alert('error doing ajax, mate');
}
});