php - SyntaxError : JSON. 解析:JSON 数据后出现意外的非空白字符

标签 php jquery ajax json cakephp

我有以下 AJAX 调用:

$('#FonykerUsernameRegister').blur(function(){
            if($(this).val().length > 2) {
                alert($(this).val());
                $.ajax({
                    url: '<?php echo $html->url('/fonykers/validate_username',true); ?>' + '/' + $(this).val(),
                    dataType: 'json',
                    type: 'POST',
                    success: function(response) {
                        if(!response.ok) {
                            $(this).addClass('error');
                            error.html(response.msg);
                            error.fadeIn();
                        } else {
                            if($(this).is('.error')) {
                                alert('im in');
                                $(this).removeClass('error');
                            }
                            $(this).addClass('ok');
                        }
                    },
                    error:function (xhr, ajaxOptions, thrownError){
                        alert('You fail');
                        alert(xhr.statusText);
                        alert(thrownError);
                    } 
                });        
            } else {
               error.html('Username must have at least 3 characters');
               error.fadeIn();
               $(this).addClass('error');
            }
        });

这是它调用的方法:

function validate_username($username) {
        $this->layout = 'ajax';
        $response = array();
        $fonyker = $this->Fonyker->find('first', array(
            'conditions' => array('Fonyker.username' =>  $username)
        ));

        if(!strlen($username) > 2) {
            $response = json_encode(array('ok' => false, 'msg' => 'Username must have at least 3 characters'));
        } else if(!preg_match('"^[a-zA-Z0-9]+$"', $username)) {
            $response = json_encode(array('ok' => false, 'msg' => 'Username must be alphanumeric'));
        } else if ($fonyker) {
            $response = json_encode(array('ok' => false, 'msg' => 'Username is already in use'));
        } else {
            $response = json_encode(array('ok' => true, 'msg' => ''));
        }

        echo $response;
    }

在 AJAX 调用中,它总是转到错误部分并输出该错误,并且我在 PHP 代码中没有看到任何空格。有什么想法吗?

编辑:

发生的情况是 CakePHP 在响应中回显整个 View ,但不是真正的 View ,而是错误屏幕。

如果您的 Controller 中需要不需要 View 的 AJAX 方法,则必须在执行任何操作之前将 Controller 方法上的 $this->autoRender 属性设置为 false .

最佳答案

您的ajax函数中可能有 echo 。检查它并从 ajax 函数中删除任何 echo、print、debug。

当你返回json数据时,你无法回显任何内容。

关于php - SyntaxError : JSON. 解析:JSON 数据后出现意外的非空白字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6767494/

相关文章:

ajax - 验证后的Laravel Select2旧输入

php - 哪个 PHP ORM 最适合 Zend Framework?

jquery - 看来 JQuery 和 AjaxToolkit 不能一起工作

javascript - 延迟 jQuery 的 handlerOut

javascript - 无法使用ajax、php和jquery提交表单

javascript - 从自动完成的输入框中获取选定的字符串

ajax - 是否可以在 JAWS 9 或 10 中强制刷新缓冲区?

PHP pconnect 和连接测试失败

php - Laravel 7.2 中的 RegistersUsers 特性

javascript - PHP 通过按键 jquery