dqhdpppm02183 2015-08-28 07:44
浏览 76
已采纳

Php函数返回是一个使用Ajax的空数组,否则不是

I'm using CakePHP framework. My problem is that when I print a php function then it gives me an array with a lot of members but when using the same function with Ajax then the response is empty.

Ajax response function:

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));

    }

}

View file ajax request:

   $(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 method returns an array in format "code" => "name". It gets the currencies from reading different sources XML files. When I print the function outside of the response it gives me a correct result but with ajax it just gives me an empty array.

Errors are coming through the response though.

Thanks!

  • 写回答

3条回答 默认 最新

  • dongzhan0624 2015-08-28 13:39
    关注

    Mistake was that I created the instances inside the method so ajax thought that I did not have any.

    Thanks for replying!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值