【发布时间】: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 字符串,我想?
-
这不是一个真正的答案。如果不是太麻烦,您可以继续发布您的解决方案吗?