使用模型时 CakePHP AJAX Json 解析错误

2024-02-01

我正在使用 CakePHP 2.5.3.0 开发一个应用程序,然后我偶然发现了 AJAX 的一个问题:

我使用从 jQuery 到 CakePHP 的 AJAX 请求来发送用户的登录名和密码,然后 CakePHP 应该返回经过验证的 JSON 响应。问题是:每当我在控制器的操作方法中使用模型方法时,JSON 响应都会在 JSON 开始之前出现意外的字符。

这是在 Google Chrome 上看到响应时的屏幕截图:https://i.stack.imgur.com/bKx3i.png https://i.stack.imgur.com/bKx3i.png

jQuery AJAX 请求代码在这里:

        $.ajax({
            url: "/login/signin.json",
            cache: false,
            type: "POST",
            dataType: "json",
            data: {
                email: $("#login-form").find("input[name=email]").val(),
                password: $("#login-form").find("input[name=password]").val()   
            },
            success: function(response) {               
                self.callback.login(response);
            }
        }); 

这是 LoginController 的“登录”方法:

        public function signin() {
        if(!$this->request->is("ajax"))     
            throw new BadRequestException();

        $this->layout = 'ajax';
        $this->response->disableCache();

        $this->RequestHandler->respondAs("application/json");

        if($this->request->is("post")):             
            $account = $this->Account->validateAccount($this->request->data['email'], Security::hash($this->request->data['password'],"sha1",true));

            if(count($account)>0):
                $account = $account['Account'];
                $message = array(   "success" => true,
                                    "message" => "[]");

                $AccountManager = new AccountSessionManager();
                $AccountManager->setId($account['id_account']);
            else:
                $message = array(   "error" => true,
                                    "message" => "The entered e-mail or password are invalid",
                                    "code" => 2 );
            endif;
        else:
            $message = array(   "error" => true,
                                "message" => "No POST request.",
                                "code" => 1 );
        endif;  

        $this->set("message", $message);
        $this->set("_serialize", array('message'));

        $this->render("ajax");
    }       

我上面渲染的“ajax”视图文件是一个简单的

<?php echo $message ?>

但每当我改变这条线

$account = $this->Account->validateAccount($this->request->data['email'], Security::hash($this->request->data['password'],"sha1",true));

to

$account = array();

在 json 响应之前我没有得到那个奇怪的字符。

我不知道为什么会发生这种情况,但这种情况发生了only当我使用any控制器中的模型方法...

顺便说一句,我从 javascript 得到的错误是:

未捕获的语法错误:意外的标记

而我所说的意想不到的字符就是Chrome中json前面的小红点。


出现该字符是因为您的 php 文件之一在打开 php 标记之前的换行符上有空格

只需检查您的模型或配置即可找到额外的换行符或空间。

Also 物料清单字符 http://en.wikipedia.org/wiki/Byte_order_mark可以产生这样的结果。 PHP 文件不应包含任何 BOM。如果您使用 Windows 记事本编辑文件,那么肯定是 BOM。只需使用其中一种编辑器进行编程即可。

你问之前有谷歌搜索过吗?JSON 响应格式错误 - 响应前的红点\项目符号 https://stackoverflow.com/questions/23511275/json-response-format-error-red-dot-bullet-before-response

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用模型时 CakePHP AJAX Json 解析错误 的相关文章

随机推荐

  • 无法解析 MatDialogRef 角度 4 的所有参数

    我正在研究 Angular 4 我正在尝试设置材质包 在这里我尝试尝试对话框 但它不起作用 可能是因为我不确定材质包 这是我的 dialog components ts import Component OnInit from angula
  • NET::ERR_CERT_COMMON_NAME_INVALID - 错误消息

    前段时间我用 Flask 建立了一个网站 现在突然间 当我尝试导航到那里时 我得到以下信息 NET ERR CERT COMMON NAME INVALID 你的连接不是私人的 攻击者可能试图从 www mysite org 窃取您的信息
  • __cdecl 调用约定不适用于 msvc x64

    只是一个测试 cdecl调用约定 这是一个 cmake 项目 只有 1 个源文件 include
  • 极其奇怪的 IE7/8 边框/不透明度兼容性问题

    奇怪的问题是 当在 IE 8 9 中应用不透明度时 边框会消失 但在 7 中不会 我基本上在屏幕顶部有一个带有选项卡的菜单 IE table tr td class tab button 1 lt td gt td class tab bu
  • 如何将 EF 类型名称传递到方法参数中?

    我正在使用 MVC3 EF4 1 和 C 我正在尝试使用通用方法来更新存在于众多实体类型中的属性 因此 我需要将类型作为参数传递到方法中 请问我该怎么做 一些代码 public Boolean CompleteTask PRV myCurr
  • jQuery AJAX 调用中是否有类似于“finally”的情况?

    jQuery AJAX 调用中是否有 Java 最终 类似物 我这里有这个代码 在我的always我抛出一个异常 但我总是希望它去then method call xmlHttpReq ajax url url dataType json
  • 如何在 Sublime Text 4(Windows)中显示菜单栏

    我更新了我的 sublime 文本 之后我似乎看不到屏幕顶部的菜单栏 但现在必须单击 3 行按钮才能查看它 有什么方法可以让菜单栏再次像平常一样显示吗 我尝试 查看 并启用它 但找不到任何 菜单栏设置 我认为显示汉堡菜单是您当前主题的一个特
  • PyCharm 调试器因 AttributeError 失败

    我无法在 PyCharm 中调试 Flask 应用程序 该应用程序应在端口 5000 上运行 app run host 10 1 0 17 port 5000 debug True 控制台输出为 C Python python exe C
  • 创建线程时有多少开销?

    我刚刚回顾了一些非常糟糕的代码 通过创建一个新线程来在串行端口上发送消息的代码 以便为发送的每条消息在新线程中打包和组装消息 是的 对于每条消息 都会创建一个 pthread 正确设置位 然后线程终止 我不知道为什么有人会做这样的事情 但它
  • Kotlin 协程选择调度程序

    我正在尝试找出在什么情况下使用哪个调度程序 我阅读了一些文档并提出了这个 默认 CPU工作 主要 主要 更新UI 无拘无束 IO 写文件 网络任务 这是正确的吗 那么无拘无束呢 您对调度程序类型的假设是正确的 无限制调度员 不局限于任何特定
  • 将视图模型绑定到淘汰赛中属性的存在

    我正在使用 Knockout js 填充一组 HTML5
  • Django:多个帐户,每个帐户下有多个用户,但特定于帐户的数据

    这里使用 Django 1 5 我创建了一个应用程序 当前拥有一大组数据 如果您愿意的话 可以用于一个 帐户 这意味着我的应用程序中所有模型中的所有数据都可供所有登录用户使用 现在 我希望能够让更多的人使用我的应用程序 但使用他们自己的数据
  • JavaScript、node.js 在继续之前等待 socket.on 响应

    我需要从客户端的服务器获取信息 所以在服务器端 当客户端第一次连接时我得到了这个 socket on adduser function username misc code where i set num player and whatno
  • CircleCi 2.0 在子目录中处理项目

    我正在尝试整合我的springbootCircleCi 的教程项目 我的项目位于 Github 存储库内的子目录中 我从 CircleCi 收到以下错误 目标需要一个项目来执行 但其中没有 POM 目录 home circleci reci
  • 如何检测DrawerLayout是否开始打开?

    所以我想在导航抽屉中隐藏一些选项卡starts开放 我的代码在打开后隐藏了它们 但这不是我想要的 mDrawerToggle new ActionBarDrawerToggle this mDrawerLayout R drawable i
  • JavaScript(ES6) 将对象设置为 null 时 WeakMap 垃圾回收

    我刚刚读到 WeakMaps 通过专门使用对象作为键来利用垃圾收集 并且将对象分配给 null 相当于删除它 let planet1 name Coruscant city Galactic City let planet2 name Ta
  • 在函数类型签名中替换 => 代替 ->

    我只是观察到如果不是 gt 我写的 gt 在函数的类型签名定义中 它不会导致编译时错误 示例代码 mysum Num a gt a gt a Notice gt after the list a mysum 0 mysum x xs x m
  • dijit.Tree搜索和刷新

    我似乎无法弄清楚如何使用 ItemFileWriteStore 和 TreeStoreModel 在 dijit Tree 中进行搜索 一切都是声明性的 我使用的是 Dojo 1 7 1 这是我到目前为止所拥有的
  • VSCode 扩展修复 Python 选项卡不一致问题 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 首先 我想知道是谁决定使用基于缩进的语言的无脑天才 以及为什么他不能简单地使用分号 令人沮丧的是 Pyt
  • 使用模型时 CakePHP AJAX Json 解析错误

    我正在使用 CakePHP 2 5 3 0 开发一个应用程序 然后我偶然发现了 AJAX 的一个问题 我使用从 jQuery 到 CakePHP 的 AJAX 请求来发送用户的登录名和密码 然后 CakePHP 应该返回经过验证的 JSON