2
我一直坚持检索我发送的变量通过ajax POST函数。你能帮我吗?cakephp,jquery,.ajax()
我的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
有谁知道我做错了吗?
谢谢!
编辑:
多一点澄清我想要什么。我想用$这个 - >设置( 'submitValue',$ params)方法; (so $ submitValue)在另一个视图的其他地方。
我最初的观察是,“json_decode()”不会像您期望的那样解码URI编码的字符串,但我可能在那里是错的。在这种情况下,JSON编码的字符串看起来像{“param1”:[“Business”,“Life”,“Health”]}。你发送给服务器的是一个URI编码字符串。 – jcolebrand
您要发送给服务器的语言是什么? 和接收 – Sedz
@ jcolebrand,我改变了“json_decode()”,以decodeURI没有变化:(。 – Arvind