CakePHP, JQuery, .AJAX () - PullRequest
       1

CakePHP, JQuery, .AJAX ()

2 голосов
/ 29 ноября 2011

Я застрял с извлечением моей отправленной переменной через функцию ajax POST.Не могли бы вы мне помочь?

Мой код Jquery:

$.ajaxSetup ({
        cache: false
    });

var selected = new Array();    
$(document).ready(function() {       
    $('.value').click(function () {                      
        if($(this).hasClass('strong'))
        {
            selected.splice(selected.indexOf(this.innerHTML), 1);  
            submitData(selected);
            $(this).removeClass('strong');
        }
        else 
        {
            selected.push(this.innerHTML);
            submitData(selected);
            $(this).addClass('strong')                         
        }
    });
});

function submitData(arDat)    {
    var arrayData =  {"param1" : JSON.stringify(arDat)};

    $.ajax({
        type: 'POST',
        url: 'http://localhost.local/coconut/trunk/challenges/values',           
        data: arrayData,
        dataType: 'json',
        success: function(data){
            console.log(arrayData);
        },
        error: function(message){
            alert(message);
        }
    });
}

Функция моего контроллера CakePHP:

function values() {
        if ($this->RequestHandler->isAjax()) {
            $this->autoRender = false;
            Configure::write('debug', 0);
            $params = json_decode($_POST['param1']);
            //$result = json_encode($params);
            $this->set('submitValue', $params);
        } else {
            $this->redirect(array('controller' => 'challenges', 'action' => 'index'));
        }
    }

И в файле view.ctp:

<?php debug($submitValue); ?>

Но я получаю следующую ошибку: Уведомление (8): неопределенная переменная: submitValue

В firebug я вижу это:

Parametersapplication/x-www-form-urlencoded
param1  ["Business","Life","Health"]
Source
param1=%5B%22Business%22%2C%22Life%22%2C%22Health%22%5D

Кто-нибудь знает, что ячто-то не так?

Спасибо!

Редактировать:

Чуть больше пояснений о том, что я хочу .. Я хочу использовать $ this-> set ('submitValue', $PARAMS);(поэтому $ submitValue) в другом месте в другом представлении.

1 Ответ

0 голосов
/ 07 января 2012

Функция CakePHP 'isAjax ()' проверяет, является ли запрос запросом Prototype Ajax.

Вы не используете Prototype, вы используете jQuery - поэтому, вероятно, он всегда возвращает falseпоэтому submitValue никогда не устанавливается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...