Ajax 发布到CakePHP API时返回错误的JSON视图

Ajax 发布到CakePHP API时返回错误的JSON视图,ajax,json,cakephp,Ajax,Json,Cakephp,几天来,我一直在尝试使用我的蛋糕应用程序,但都没有成功。你能给我指一下正确的方向吗 当我尝试通过jQuerys$.ajax向我的admin\u add()方法发帖时,我只会得到我的视图/$Controller/json/admin\u index.ctp(或index.ctp)返回,而不会返回视图/$Controller/json/admin\u add.ctp模板 请求似乎已通过身份验证,可以在开发工具中作为POST(200)查看,但无论我做什么,都只返回index.ctp视图,而不是admi

几天来,我一直在尝试使用我的蛋糕应用程序,但都没有成功。你能给我指一下正确的方向吗

当我尝试通过jQuerys
$.ajax
向我的
admin\u add()
方法发帖时,我只会得到我的
视图/$Controller/json/admin\u index.ctp
(或
index.ctp
)返回,而不会返回
视图/$Controller/json/admin\u add.ctp模板

请求似乎已通过身份验证,可以在开发工具中作为POST(200)查看,但无论我做什么,都只返回index.ctp视图,而不是admin_add

以下是ajax链接:

$.ajax({
    type: "POST",
    url: "http://dev.mydomain.co.uk/faqArticles.json?token=" + userToken,
    data: data,
    dataType: "json",
这里是admin\u add方法

public function admin_add() {

    // New API code 
    $this->Api->denyPublic('add');

    if ($this->request->is('post')) {

        if ($this->request->is('api')) {

            if ($this->request->is('json')) {

                // Need to add the current auth'd users to this request data here
                $this->request->data['user_id'] = $this->Auth->user('id');

                // Get JSON encoded data submitted to a PUT/POST action
                $data = $this->request->input('json_decode');

                $this->FaqArticle->create();
                if ($this->FaqArticle->save($data)) {

                    // Get the id of the just created post to pass back to client for future updates.
                    $caId = $this->FaqArticle->getInsertID();
                    $success = true;

                } else {

                    $caId = null;
                    $success = false;
                }

                $this->set(compact('success', 'caId'));

            }

        } else {

            // Normal CRUD stuff
            $this->FaqArticle->create();

            // Assigned logged in users to article
            $this->request->data['FaqArticle']['user_id'] = $this->Auth->user('id');

            if ($this->FaqArticle->save($this->request->data)) {
                $this->Session->setFlash('The faq article has been saved', 'flash_success');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('The faq article could not be saved. Please, try again.', 'flash_failure');
            }

        }
    }


    $users = $this->FaqArticle->User->find('list');
    $faqCategories = $this->FaqArticle->FaqCategory->find('list');
    $this->set(compact('users', 'faqCategories'));

    // Set layout
    $this->layout = 'admin';
}

views/faqArticles/json/admin_index.ctp看起来像:

<?php
$this->set('success', true);
$this->set('data', "ADMIN INDEX");
echo json_encode(compact('success', 'data'));
?>
<?php
$this->set('success', true);
$this->set('data', "ADMIN ADD");
echo json_encode(compact('success', 'data'));
?>
这将返回admin_add JSON视图,但会按照上面的步骤获取admin索引

很明显我做错了什么?任何帮助都会很棒


谢谢

当您发出Ajax请求时,我认为您只是链接到了错误的页面(索引页面而不是admin\u add),我希望您的Ajax请求看起来更像这样:

$.ajax({
type: "POST",
url: "http://dev.mydomain.co.uk/admin/faqArticles/add.json?token=" + userToken,
data: data,
dataType: "json"});

你确实是对的。cake文档说您应该发布到索引-POST/recipes.format RecipesController::add(),但这个插件显然不是这样。谢谢
$.ajax({
type: "POST",
url: "http://dev.mydomain.co.uk/admin/faqArticles/add.json?token=" + userToken,
data: data,
dataType: "json"});