2016-12-29 115 views
0

我有一個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

回答

0

通過嘗試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