【问题标题】:Using getJSON() on CakePHP framework在 CakePHP 框架上使用 getJSON()
【发布时间】:2013-11-10 14:00:28
【问题描述】:

我正在使用 AJAX 检查用户名是否在数据库中。这是控制器代码:

public function check_username(){
    if($this->request->is('json')){
        $user = $this->User->find('count', array('conditions' => array('username' => $this->request->data['username'])));
        if($user === 0)
            echo '1';
        else
            echo false;
    }
    $this->autoRender = false;
}

我在视图上使用了 AJAX。没关系,现在我正在尝试使用 Json 并将我的控制器代码更改为:

public function check_username(){
    if($this->request->is('json')){
        $user = $this->User->find('count', array('conditions' => array('username' => $this->request->data['username'])));
        echo json_encode($user);
    }
    $this->autoRender = false;
}

这是我的视图代码。这不起作用(没有出现警报):

var un = $('#username').val();
$.getJSON(
    '/oes/users/check_username',
    {username:un},
    function(result){
    alert(result);
});

现在请任何人帮助我让它工作。我也是 Json 的新手。 提前致谢。

【问题讨论】:

  • 不熟悉 CAKE...但这看起来很可疑 if($this->request->is('json')){ 你没有发送任何 json,也没有任何获取参数 json。在浏览器控制台中检查请求以查看它是否正在发出、状态、响应等
  • 感谢您考虑到我的问题,尽管您不熟悉 CakePHP。 $this->request->is('json') 只是检查请求是否为json。我也试过评论这个。你能告诉我原始的php方式吗?
  • 您是否在控制台中检查了请求?需要知道是哪一端导致问题,或两者兼而有之
  • 不,我不能使用控制台。这不只是出现(控制台窗口)。那我该怎么办?
  • 你的代码全是错误的。阅读 CakePHP 手册中关于 JsonView 的内容。

标签: php jquery ajax json cakephp


【解决方案1】:
public function check_username(){
    if($this->request->is('json')){
        $user = $this->User->find('count', array('conditions' => array('username' => $this->request->data['username'])));
        echo json_encode($user);
        exit;

    }
    $this->autoRender = false;
}

如果它有效,则问题来自加载视图,(由于 autoRender=false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多