【发布时间】:2012-06-14 12:19:27
【问题描述】:
我正在编写一个返回数据库结果的函数。
如果函数是从另一个函数调用的,我需要它来return 数据,而当它通过 AJAX 调用时,我需要 echo 数据。
可能的解决方案
- 传入一个参数...
if($echo) echo $data; else return $data; - 单独的功能...
function employees_ajax() { echo $this->employees(); }
我更喜欢更智能的东西,它可以检测到“自身”是从另一个函数和return 调用而不是echo。
更新
另一种可能性是检查 $_SERVER 变量。
“据我所知,X-Requested-With 是由大多数主要框架的 Ajax 函数发送的,但不是全部......可以肯定地说,它通常不是 100% 可靠的方法来确定是否请求是否为 AJAX 请求。”
Does $_SERVER['HTTP_X_REQUESTED_WITH'] exist in PHP or not?
依赖服务端而不是客户端/js框架是安全的。
更新 2:结果
function employees($id = NULL, $return = FALSE) {
.
.
.
if($return === TRUE) return json_encode($data);
else echo json_encode($data);
}
【问题讨论】:
-
我认为这不是一个好方法。您应该处理调用 php 的返回。
-
employees()返回什么样的数据?如果它是 AJAX 和 PHP 数组,你想返回 JSON 吗? -
@woz
employees()应该为这两种情况返回一个 JSON 字符串...return json_encode($data);或echo json_encode($data);。 -
PHP调用函数时,JSON怎么处理?
标签: php ajax backbone.js crud