Buchung an Controller mit JQuery Ajax in CakePHP

Ich möchte Daten in CakePHP an einen Controller senden, aber das Senden mit JQuery führt immer zu einem Fehler und ich kann nicht herausfinden, warum.

Meiner Ansicht nach habe ich die folgende Methode, die die Daten auf der Controllerseite veröffentlicht

function RenameNode(name, id)
{
    $.ajax({
        type: "POST",
        url: '<?php echo Router::url(array('controller' => 'categories', 'action' => 'rename')); ?>',
        data: {
            id: id,
            name: name
        },
        success: function(){

        }
    });
}

Meine Controller-Methode sieht folgendermaßen aus:

public function rename($id = null, $name = null) {
    if ($this->request->is('get')) {
        throw new MethodNotAllowedException();
    }

    if(!$id)
    {
        $id = @$this->request->query('id');
    }

    if(!$name)
    {
        $name = @$this->request->query('name');
    }           

    if (!$id) {
        throw new NotFoundException(__('No id'));
    }

    $category = $this->Category->findById($id);
    if (!$category) {
        throw new NotFoundException(__('Invalid category'));
    }

    $this->autoRender = false;
    $this->layout = 'ajax';

    if ($this->request->is('post') || $this->request->is('put')) {
        $this->Category->id = $id;
        $this->request->data['Category']['name'] = $name;


        if ($this->Category->save($this->request->data)) {
            $this->Session->setFlash(__('The category has been updated.'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('Unable to update the category.'));
        }
    }
}

Wenn ich mit der jquery-Methode einen Beitrag verfasse, wird in meinem Protokoll immer wieder die folgende Fehlermeldung angezeigt:

2013-05-20 11:34:25 Error: [NotFoundException] No id
Request URL: /cakephp/categories/rename
Stack Trace:
#0 [internal function]: CategoriesController->rename()

Wenn ich die Anforderungsprüfungen für get und post kommentiere, funktioniert der Controller selbst perfekt, wenn ich ihn mit / categories / rename? Id = 1 & name = test aufrufe. Aus irgendeinem Grund funktioniert der Ajax-Weg nicht, aber ich kann nicht herausfinden, warum. Irgendwelche Ideen?

Aktualisieren

Ich habe es durch Ändern des folgenden Codes behoben, jetzt funktioniert es einwandfrei

    if(!$id)
    {
        $id = @$this->request->query('id');
    }

    if(!$name)
    {
        $name = @$this->request->query('name');
    }

zu

    if(!$id)
    {
        $id = @$this->request->data('id');
    }

    if(!$name)
    {
        $name = @$this->request->data('name');
    }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage