2014-01-18 69 views
0

AJAX功能獲得來自控制器的數據jquery的使用json_encode

<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使用進度bar..my想法具有problem..im正在進展酒吧就像一個生命點/健康吧..但它似乎是當我把$('#progressbar').progressbar它不會得到從jsn.scoreCH ..jst的價值無視response == false它仍然工作我試圖使用控制檯log..But當我把這個code..it將不會被讀取並顯示輸出..

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

回答

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

我已經嘗試過了,仍然沒有display..i認爲主要的問題是part..coz連我的值更改爲'值進度條:50'仍然沒有顯.. – Zurreal

+0

通知。你需要傳遞INT值。嘗試使用'value:parseInt(response.scoreCH)'。如果它不起作用,你已經在HTML/CSS的錯誤http://jsfiddle.net/phpowl/5x24w/ –

+0

我已經做到了..但仍然是同樣的問題..我認爲進度條是一個jQuery .. – Zurreal