如何通过JSON(CodeIgniter)正确传递数据

时间:2013-07-28 16:47:19

标签: json codeigniter

我正在尝试将数据从我的模型传递到控制器,并从我的控制器传递到JSON查看。

我的模特:

public function GetRecordDetails($array){
    $this->db->select('*');
    $this->db->where('type', $array['event_type']);
    $this->db->where('id', $array['event_id']);

    return $this->db->get('records')->result_array();
}

我的控制器:

public function show_record(){

    $this->load->model('records_model');
    $data = array(
        "event_id" => $_POST['id'],
        "event_type" => $_POST['type']
    );
    $msg = array();

    if(empty($data['event_id']))                            $msg['failed'] = "failed"; else
    if(empty($data['event_type']))                          $msg['failed'] = "failed"; else
    if($this->records_model->CheckForRecord($data) == 0)    $msg['failed'] = "failed"; else

    if(count($msg) == 0){
        $array['data'] = $this->records_model->GetRecordDetails($data);

        $msg = array(
            "success" => "success",
            "id" => $data['event_id'],
            "country" => $array['data']
        );
    }

    echo json_encode($msg);
}

和我的观点:

EVENT.show = function (id, type) {

$("#loader_" + id).html("<img src='images/loaders/loader2.gif' width='11px' height='11px' alt='loading' />");    
$("#failure").css('display', 'none');
$("#record_show").css('display', 'none');

var form_data = {
    id      : id,
    type    : type
}

$.ajax({
    url: "records/show_record",
    type: 'POST',
    dataType: 'json',
    data: form_data,
    success: function (data) {
        if(data.failed){
            $("#loader_" + id).html("");
            $("#failure").fadeIn(500);
            $("#msg_area").html(data.failed);
        }
        if(data.success){
            $("#loader_" + id).html("");
            $("#record_show").fadeIn(500);
                $("#record_id").val(data.id);
                $("#record_country").val(data.country);
        }
    },
    error: function (e) {
        console.log(e.message);
    }
});

return false;
};

我无法从控制器中的数组中收到“country”值。我只是不知道该怎么做。

它从我的mysql数据中返回所有数组:

{"success":"success","id":"38","country":[{"id":"38","type":"1","country":"1","event":"RAFAEL NADAL vs NOVAK DJOKOVIC","date":"2013-07-24 00:00:00","selection":"Novak Djokovic +2.5","odds":"1.83","result":"1"}]}

我该怎么办,只从我的阵列中抓取一个元素?我希望我的国家/地区值为$array['data']['country'],但如果我在控制器中输入它,我会得到(对象对象)

1 个答案:

答案 0 :(得分:0)

您已将$msg数组中的“country”键设置为整个结果集数组。

如果我理解你要做的是什么,那么国家/地区价值实际上是$msg[country][country]

如果您设置$msg数组时使用$array[data][country]会更好,那么您只需使用$msg[country]检索国家/地区值即可。

我希望我明白你的问题是什么。

聚苯乙烯。作为一个侧面问题,命名数组'数组'可能不是一个好主意,因为它可能会很快混淆。根据数组中的内容(例如结果)命名。