我有一个视图,其中有detailview
和gridview
。在我的网格视图中,对所有列都有check-boxes
。 detail view
包含model id
。现在案例很简单,我想从网格视图中选择任何列,然后单击我要发送ajax调用的a link
按钮,其中包括所选列的值和模型ID,控制器。以下是我的观点
<?= GridView::widget([
'dataProvider' => $dataProvider,
/*'filterModel' => $searchModel,*/
'columns' => [
['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => function($d) {
return ['value' => $d['meter_id']];
}],
'Meter_Serial_Number',
'Issued_To',
'Store',
],
]); ?>
<a href="<?= URL::toRoute(['ogpheader/viewsetpdf', 'id'=>$model->id])?>" name="redirect" class="btn btn-primary" id="myid">Set PDF</a>
现在javascript
和ajax
来电
<?php
$url = Url::toRoute(['/ogpheader/viewsetpdf','id'=>$model->id]);
$script = <<< JS
$(document).ready(function () {
$('#myid').on('click',function() {
var strValue = "";
$('input[name="selection[]"]:checked').each(function() {
if(strValue!="")
{
strValue = strValue + " , " + this.value;
}
else
strValue = this.value;
});
// alert(strValue);
$.ajax({
url: '$url',
type: 'POST',
data: {
data: strValue,// also tired with {strValue:strValue id:id} but it did not worked for me as well
},
success: function(data) {
alert(data);
},
});
})
});
JS;
$this->registerJs($script, static::POS_END);
?>
动作控制器
public function actionViewsetpdf($id)
{
$model = $this->findModel($id);
print_r($_POST);
$data = "";
if(Yii::$app->request->isAjax)
{
$data = json_decode($_POST['data']);
print_r($data);
}
else{
echo 'no data';
}
exit();
}
我总是得到的回复是Array ( ) no data
。我也研究了Passing two parameters in yii2 ajax request using jquery to a controller和Yii2 extra parameter ajax in controller,但两者似乎对我的情况都有帮助。
注意:
根据我的理解,id
是一个获取而strValue
是帖子。所以我对他们两个都很困惑。可能是我错了。
更新1
图像质量不太好
Xhr
中的回复是
array(1) {
["data"]=>
array(1) {
["data"]=>
string(26) "99 , 100 , 101 , 102 , 103"
}
}
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
阻止默认点击事件
$('#myid').on('click',function(e) {
e.preventDefault();