我一直无法通过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); (因此$ submitValue)在其他视图中的其他位置。
最佳答案
CakePHP函数'isAjax()'检查请求是否为原型Ajax请求。
您没有使用Prototype,而是使用jQuery-因此大概它总是返回false,因此从来没有设置SubmitValue。