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
任何帮助这么感激...
答
通过尝试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);
}
});
// ...
我相信,这会显示'nama_detail'值为逗号分隔文本。 OP想要一个“清单箱”。显然,如您所示,响应JSON需要使用'$ .each()'来解析。也许这可以帮助 - http://stackoverflow.com/a/15230274/3745507动态呈现复选框 – sm1979
哦,是的,你是对的,我错过了它。 那么,不知道他是否想要“工作”复选框列表,因为该模式可能不在窗体中,但他可以使用$ form->字段($ model,...'如果代码位于活动窗体内,我也需要将JS代码重写为JsExpression,所以他可以在那里使用PHP代码 – Ripper