【问题标题】:cakephp, jquery, .ajax()cakephp, jquery, .ajax()
【发布时间】:2011-11-28 23:00:54
【问题描述】:

我一直坚持通过 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

在萤火虫中我看到了这个:

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); (so $submitValue) 在另一个视图中的其他地方。

【问题讨论】:

  • 我最初的观察是“json_decode()”不会像你期望的那样解码 URI 编码的字符串,但我可能错了。在这种情况下,JSON 编码的字符串看起来像 {"param1":["Business","Life","Health"]}。您发送到服务器的是一个 URI 编码字符串。
  • 您发送到服务器的语言是什么?并接收
  • @jcolebrand,我将“json_decode()”更改为 decodeURI 没有变化 :(.
  • @UserB JSON 字符串,我想?
  • 这不是一个真正的答案。如果不是太麻烦,您可以继续发布您的解决方案吗?

标签: php cakephp jquery


【解决方案1】:

CakePHP 函数“isAjax()”检查请求是否是原型 Ajax 请求。

你没有使用 Prototype,你使用的是 jQuery——所以大概它总是返回 false,所以 submitValue 永远不会被设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多