我正在使用CakePHP框架。我的问题是,当我打印一个php函数时,它给了我一个包含很多成员的数组,但是当使用与Ajax相同的函数时,响应是空的。
Ajax响应函数:
public function functionOne(){
$this->autoRender = false;
if ($this->request->is('ajax')) {
if(!$this->request->data['amount']) {
$json['errors'][] = 'Fill in all the required fields';
}elseif(!is_numeric($this->request->data['amount'])){
$json['errors'][] = 'Field amound has to be a number';
}
if(!$this->request->data['currency_from']){
$json['errors'][] = 'Fill in all the required fields';
}
if(!$this->request->data['currency_to']){
$json['errors'][] = 'Fill in all the required fields';
}
if(!$this->request->data['rate_date']){
$json['errors'][] = 'Fill in all the required fields';
}
if(isset($json['errors'])){
$json['status'] = 'error';
}else{
$json['status'] = 'success';
$json['curs'] = $this->functionTwo($this->request->data['date1']);
$json['rates'] = $this->functionThree($this->request->data['date'], $this->request->data['from'], $this->request->data['to'], $this->request->data['amount']);
}
print_r(json_encode($json));
}
}
查看文件ajax请求:
$(document).ready(function(){
$('#converter').on('submit', function(e) {
var form = $(this);
e.preventDefault();
$.ajax({
url: '<?php echo $this->Html->url(array(
"controller" => "cur",
"action" => "functionOne"
));
?>',
data: form.serialize(),
type: 'post',
async: true,
success: function (data) {
var json = data;
if (json.status == 'error') {
$('#errors').show();
$('#currencies').hide();
$('#errors').html('');
$.each(json.errors, function (k, v) {
$('#errors').append("<span>" + v + "</span>");
});
}
if (json.status == 'success') {
var json = data;
$('#errors').hide();
$('#currencies').show();
}
}
});
})
});
getCur方法以“code”=&gt;格式返回一个数组“名称”。它从阅读不同来源的XML文件中获取货币。当我在响应之外打印函数时它给了我一个正确的结果但是使用ajax它只给了我一个空数组。
但错误正在通过回应传来。
谢谢!
答案 0 :(得分:0)
你使用的是什么版本的蛋糕?
取决于蛋糕的版本。
1.3.x:
$this->RequestHandler->isAjax();
2.x
$this->request->is('ajax');
您还可以检查Chrome网络标签是否存在任何特定问题。
答案 1 :(得分:0)
尝试:
onUse
成功回调时,使用:
解析数据变量echo json_encode($json);
查看控制台内的数据。
答案 2 :(得分:0)
错误是我在方法中创建了实例,所以ajax认为我没有。
感谢您的回复!