【问题标题】:Where I am getting wrong?我哪里错了?
【发布时间】:2018-01-21 21:54:57
【问题描述】:

在视图中的 ajax

$.ajax({       //Default Dose
    data    : {'cropid':cropid},
    type    : 'post',
    url     : "<?php echo base_url();?>index.php/user/cropConfig/getDose",
    dataType: 'json',
    success :function(response) {
        console.log(response);
        console.log("Hello");
    },
    error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
    }
})

控制器中的代码

    function getDose()  //this will bring default configured crop Dose
    {
        $user=$this->session->userdata('user');
        //$districtid=$user['district_id'];
        $cropid=$this->input->post('cropid');
        $dose=array();
        $dose=$this->cropConfig_model->getDose($cropid);
        print_r($dose);
        echo(json_encode($dose));
    }

控制器的输出:

Array ( [0] => Array ( [dosenumber] => 1 [per] => 20 [das] => 0 ) [1] => Array ( [dosenumber] => 2 [per] => 40 [das] => 30 ) [2] => Array ( [dosenumber] => 3 [per] => 40 [das] => 30 ) ) [{"dosenumber":"1","per":"20","das":"0"},{"dosenumber":"2","per":"40","das":"30"},{"dosenumber":"3","per":"40","das":"30"}]

模型中的代码

function getDose($cropid){       //this will bring default configured crop Dose
    $this->db->select('*');
    $this->db->from('cropdose');
    $this->db->where('cropid',$cropid);
    $queryCropDose = $this->db->get();
    return $queryCropDose->result_array();
}

我已成功获取数据,但 ajax 中的响应没有响应给出我无法解决的错误。

【问题讨论】:

  • 评论此行//print_r($dose);它会起作用

标签: javascript php


【解决方案1】:

第一个:您只需要返回response json 数据而不是其他数据因为您设置了dataType:"json" 所以评论这一行。然后ajax 将work

 //print_r($dose); 

现在可以使用了。

【讨论】:

  • 可能是你没有设置dataType:"json"@Talha
  • 但是 print_r() 有什么问题
  • 无论您的回显和 print_r() 以及任何浏览器输出都是 ajax 响应。所以你定义了dataType:"json",所以你只需要返回json数据而不是其他字符串或数组。
  • 但其他 ajax 不会出现此问题!
  • 愿你除了 json data 不打印任何东西。 @Talha
【解决方案2】:

尝试从控制器中删除 print_r 行?

function getDose() {
$user=$this->session->userdata('user');
//$districtid=$user['district_id'];
$cropid=$this->input->post('cropid');
$dose=array();
$dose=$this->cropConfig_model->getDose($cropid);
//print_r($dose); <--Here!!
echo(json_encode($dose));

}

【讨论】: