繁体   English   中英

jQuery使用json_encode从控制器获取数据

[英]jquery get data from controller using json_encode

Ajax功能

<script type="text/javascript">
    var timeOutID =0;
    var checkScores =  function () {
        $.ajax({
            url: 'http://127.0.0.1/ProgVsProg/main/countScoreCh',
            success: function(response) {
                if(response == false){
                    timeOutID = setTimeout(checkScores, 3000);
                } else {
                    jsn = JSON.parse(response);
                    score= jsn.scoreCH;
                    $('#progressbar').progressbar({
                        value: score
                    });
                    clearTimeout(timeOutID);
                }
            }
        });
    }

    timeOutID = setTimeout(checkScores,1000);
</script>

控制者

public function countScoreCh(){
    $id = $this->session->userdata('userID');
    $data['getScore'] = $this->lawmodel->battleUserID($id);
    foreach($data['getScore'] as $row){
        $scoreCH = $row->challengerScore;
        echo json_encode(array('scoreCH' => $scoreCH));
    }
}

我有一个问题..im使用进度条..我的想法是使进度条像一个Hit Point / Health bar ..但是似乎当我把$('#progressbar').progressbar放不上时jsn.scoreCH ..jst的值不考虑response == false它仍然有效,我尝试使用控制台日志..但是当我放置此代码时..它将不会被读取并显示输出。

 $('#progressbar').progressbar({
     value: score
 });

您可以省略JSON.parse(response)。 只需使用dataType: 'json'

$.ajax({
        url: "http://127.0.0.1/ProgVsProg/main/countScoreCh",
        dataType: 'json'
        success: function(response) {
            if(response.scoreCH == undefined){
                timeOutID = setTimeout(checkScores, 3000);
            } else {
                $('#progressbar').progressbar({
                    value: response.scoreCH
                });
                clearTimeout(timeOutID);
            }
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM