jQuery的对话框中yii2

问题描述:

我有一个js在yii2这样的:jQuery的对话框中yii2

<?php 
$getDetailItem = \Yii::$app->getUrlManager()->createUrl(['it/request/get-item-detail']); 

$js = <<<JS 
var \$pop = $("input[type='checkbox'][name='ItemRequest[id][]']"); 
$("input[type='checkbox'][name='ItemRequest[id][]']").click(function(e){ 
    $.ajax({ 
      url : '$getDetailItem', 
      type : 'post', 
      data : {id : $(this).val()}, 
      dataType : 'text', 
      success : function(response){ 
       krajeeDialog.confirm("Your Choice : <br>" + 

        response 

       , function (result) { 
       if (result) { 
        alert('Anda memilih Item : ' + response); 
       } 
      }); 
     } 
    }); 
}); 
JS; 
$this->registerJs($js) 
?> 

,如果你能在该行看到:

$getDetailItem = \Yii::$app->getUrlManager()->createUrl(['it/request/get-item-detail']); 

会产生这样一个JSON:

[{ 
    "id": "1", 
    "item_request_id": "1", 
    "nama_detail": "Create Login Novell" 
}, { 
    "id": "2", 
    "item_request_id": "1", 
    "nama_detail": "Create Email Baru" 
}, { 
    "id": "3", 
    "item_request_id": "1", 
    "nama_detail": "Disable/Hapus Login Novell" 
}, { 
    "id": "4", 
    "item_request_id": "1", 
    "nama_detail": "Disable/Hapus Email" 
}] 

我的问题是,如何在对话框中显示response.nama_detail作为checklistbox?

我用THI krajee插件:kartik/krajee

然后用户可以选择的项目nama_detail

任何帮助这么感激...

Window prompt

通过尝试parsing that JSON响应和数据格式你需要通过循环访问数组,你会得到,我用这个jquery each method

希望我没有做任何misstake那里,这没有测试,如果你发现任何错误,请随时评论或编辑。

 // ... 
     success : function(response){ 
      var parsed = JSON.parse(response); 
      var output = ""; 
      $.each(parsed, function(index, value){ 
       output .= value['nama_detail'] . ", "; 
      }); 
      krajeeDialog.confirm("Your Choice : <br>" + 

       output 

      , function (result) { 
      if (result) { 
       alert('Anda memilih Item : ' + response); 
      } 
     }); 
     // ... 
+0

我相信,这会显示'nama_detail'值为逗号分隔文本。 OP想要一个“清单箱”。显然,如您所示,响应JSON需要使用'$ .each()'来解析。也许这可以帮助 - http://stackoverflow.com/a/15230274/3745507动态呈现复选框 – sm1979

+1

哦,是的,你是对的,我错过了它。 那么,不知道他是否想要“工作”复选框列表,因为该模式可能不在窗体中,但他可以使用$ form->字段($ model,...'如果代码位于活动窗体内,我也需要将JS代码重写为JsExpression,所以他可以在那里使用PHP代码 – Ripper