0

モデルからコントローラーに、コントローラーから 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;
};

コントローラーの配列から「国」の値を受け取ることができません。どうすればいいのかわかりません。

私の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"}]}

配列から要素を 1 つだけ取得するにはどうすればよいですか? 私は自分の国の値が欲しいのですが$array['data']['country']、コントローラーに入力すると (object Object) が得られます

4

1 に答える 1

0

配列内の「country」キーを$msg結果セット配列全体に設定しました。

あなたがやろうとしていることを私が正しく理解していれば、国の値は実際には$msg[country][country].

$msg使用した配列を設定するときに、を使用$array[data][country]して国の値を取得する方がよいでしょう$msg[country]

あなたの問題が何であるかを理解したと思います。

Ps。副次的な問題として、配列に「配列」という名前を付けることは、すぐに混乱を招く可能性があるため、おそらく良い考えではありません。結果など、配列の内容に基づいて名前を付けます。

于 2013-07-28T17:04:04.443 に答える