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

时间:2014-01-18 13:14:34

标签: php jquery

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

我有一个问题..我使用进度条...我的想法是让进度条像点击点/健康栏...但是当我把$('#progressbar').progressbar它似乎不会得到来自jsn.scoreCH的值... jst忽略它仍在工作的response == false我尝试使用控制台日志。但是当我把这个代码..它不会被读取并显示输出..

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

1 个答案:

答案 0 :(得分:0)

您可以省略JSON.parse(响应)。只需使用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);
            }
        }
    });