我的问题有点类似于cakephp, jquery, .ajax(), dataType: json ,但我的观察略有不同。
我正在开发一个 Cake PHP 项目。考虑 opstools
模块的 group_assoc
子模块。因此,opstools_controller.php 中有一个函数 group_assoc()
,它由 ajax 调用调用来更新组关联。
我的ajax帖子是这样的 -
$.post( url,
function(data)
{
if(data)
{
alert(data.success); //alerts -> undefined
alert(data); //alerts -> {"success":true} or {"success":false}
if(data.success)
{
//does not work
}
}
}, "json");
在 opstools_controller.php
里面我有 -
function group_assoc()
{
...
...
//some code
...
...
$success //contains true or false - depending on previous logic
echo json_encode(array("success" => $success));
}
因此,在 Ajax 响应处理函数内(在 ajax 发布部分),我得到一个类似 {"success":false}
的字符串。
如何解决这个问题。我记得使用类似的 Ajax 发布和响应使用 json_encode,这在之前使用 Core PHP 的项目(没有 Cake PHP)中工作得非常好。这里可能有什么问题?有什么指点吗?
更新
我需要显式设置任何 header 吗?为什么需要这样?在哪里检查是否设置我们返回文本。我尝试将 header("HTTP/1.1 200 OK");
放在回显部分之前,就像现有代码中所做的那样 - 类似的 Ajax 处理函数。
此外,我在模块中设置了 $this->autoRender = false;
。
最佳答案
关于json - 无法正确读取处理 Ajax 调用的 Cake PHP Controller 函数发送的 json 编码的成功/失败状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6464248/