2014-10-02 42 views
1

我想向/從控制器動作發送/獲取變量。我的代碼:如何在Yii中使用JSON

視圖文件

.... 
<button id="radiyo">radio</button> 
<script> 
$("#radiyo").on("click", function(){ 
    var $radio = $('input[type=radio][name=siniflerin-siyahisi]:checked').attr('id'); 
    $.ajax({ 
     type: 'POST', 
     url: '<?=Yii::app()->baseUrl;?>/ideyalar/sech/radio', 
     async: false, 
     cache: false, 
     data: {radio: $radio}, 
//  datatype: "html", 
     success:function(){ 

      alert($radio); 
     } 
    }); 
    $.ajax({ 
     type: 'GET', 
     url: '<?=Yii::app()->baseUrl;?>/ideyalar/sech/radio', 
     async: false, 
     cache: false, 
     datatype: "json", 
     data: {change: $sql}, 
     success: function(data) { 
      alert(data.change); 
     } 
    }); 
}); 
</script> 
.... 

控制器動作

public function actionSech ($radio) 
{ 
    $sql = Yii::app()->db->createCommand() 
     ->select ('m.maraq') 
     ->from ('maraq m') 
     ->where ('m.idsinif=:ids', [':ids'=>$radio]) 
     ->queryAll(); 
    $gonderilen = CJSON::encode(['change'=>$sql]); 
} 

,我讀了Yii的官方網站和其他論壇的文章。但我無法理解我該怎麼做。

請告訴我,我該如何發送$sql變量到我的查看文件

謝謝。

+0

你可以給我更多關於json輸出應該如何看待的信息嗎? – 2014-10-03 15:10:13

+0

感謝您的關注。作爲複選框。 – 2014-10-03 16:03:01

+1

對不起。我想我的問題並不清楚。通常我所做的是循環查詢結果並按照我想要的方式進行格式化。例如。 $ change = array(); foreach($ sql as $ s){ \t $ change [] = $ s-> maraq; } echo json_encode($ change); – 2014-10-03 16:11:33

回答

0

我不是很確定你想要什麼。但是,我想指出一些片段。

鑑於文件

<?php 
    Yii::app()->clientScript->registerScript("header-info"," 
     var baseUrl = '".Yii::app()->baseUrl;."'; 
    ",CClientScript::POS_HEAD); 
?> 

<button id="radiyo">radio</button> 
<script> 
    $("#radiyo").on("click", function(){ 
    var radioValue = $('input[type=radio][name=siniflerin-siyahisi]:checked').attr('id'); 
    $.ajax({ 
     url: baseUrl +'/ideyalar/sech', 
     dataType:'json', 
     type:'POST',   
     data:{radioValue:radioValue}, 
     async:false 
     }).done(function(data){ 
     if(data['status'] == 'OK'){ 
      alert(data['returnValue']); 
     }else if(data['status'] == 'ERROR'){ 
      alert("HERE WE GO ERROR"); 
     } 
    }); 
    }); 
</script> 

你的控制器動作;

public function actionSech() 
{ 
    //In my point, I never call db layer in controller. Controller should be routing purpose 

    If(Yii::app()->request->isAjaxRequest){ 
     $radioValue = isset($_REQUEST['radioValue']) ? $_REQUEST['radioValue'] : ""; 
     $returnObj = array(); 
     if($radioValue !=""){ 
     $query = "SELECT `maraq` FROM maraq WHERE idsinif='$radionValue'"; 
     $result = Yii::app()->db->createCommand($query)->queryScalar(); 
     if($result != "" || $result != null){ //ensure result is correct or not 
      $returnObj['returnValue'] = $result; 
      $returnObj['status'] = 'OK'; 
     }else{ 
      $returnObj['status'] = 'ERROR'; 
     } 
     }else{ //if radiovalue is blank string 
     $returnObj['status'] = 'ERROR'; 
     } 
     echo json_encode($returnObj); 
    } 
} 

希望得到這個幫助!順便說一句,JavaScript變量不能初始化爲$。只有var yourVar =「」;