gpt4 book ai didi

javascript - 无法将数据从 View 发布到 Yii2 中的 Controller

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:08 24 4
gpt4 key购买 nike

我正在研究 Yii2。我有一个带有复选框的 gridview,在单击按钮时我将它重定向到使用 ajax 的 Action Controller 。

 <?= Html::a('Disconnect', ['dco'], ['class' => 'btn btn-success', 'id'=>'dco']) ?>

<?php Pjax::begin(); ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [


['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => function($d) {
return ['value' => $d['msn']];
}],


'ref_no',
'dept_code:ntext',
'dept_name:ntext',

'allowed_units',
'msn',

'units_consumed',
[
'label' => 'Disconnected',
'attribute' => 'disconnected',
'format'=>'raw',
'contentOptions' => ['style'=>'text-align:center'],
'value' => function($model){
return $model->disconnected == 1 ? '<span class="glyphicon glyphicon-ok text-success"></span>' : '<span class="glyphicon glyphicon-remove text-danger"></span>';
},
'filter' => Html::activeDropDownList($searchModel, 'disconnected', [''=>'All','1'=>'Yes','0'=>'No'], ['class' => 'form-control']),
],

'diconnected_at',
'reconnected_at',
'active_energy_total_m',


['class' => 'yii\grid\ActionColumn'],
],
]); ?>
<?php Pjax::end(); ?>

JS

<?php

$DCOurl = Url::toRoute(['/hecolog/dco']);

$script = <<< JS
$(document).ready(function () {



//DCO
$('#dco').on('click',function(e) {


e.preventDefault();
var strValue = "";
$('input[name="selection[]"]:checked').each(function() {

if(strValue!=="")
{
strValue = strValue + " , " + this.value;

}
else
strValue = this.value;

});

$.ajax({
url: '$DCOurl',
type: 'POST',
dataType: 'json',
data: {data:strValue},
success: function(data) {
alert(data);
}
});


});
});
JS;
$this->registerJs($script, static::POS_END);
?>

但是当我点击断开连接按钮时,它不会重定向到我的 Controller 。在控制台中,它显示 Not Found (#404): Page not found.

更新 1

我已经像下面这样更新了 ajax 调用

$.ajax({
url: $DCOurl, // removed the inverted commas ''
type: 'POST',
dataType: 'json',
data: {data:strValue},
success: function(data) {
alert(data);
}
});

Controller

 public function actionDco()
{
if(Yii::$app->request->isAjax && Yii::$app->request->post())
{
$data = explode(',',$_POST['data']);

var_dump($data);
die();
}
else{
$this->redirect('index');
}




}

按照建议更新代码后,我可以进入我的 Controller ,但仍然无法获取数据

在控制台中我收到错误 Uncaught SyntaxError: Invalid regular expression flags

enter image description here

更新 2

下面是我的 View 代码

<?php

use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\Pjax;
use yii\helpers\Url;
use yii\web\JqueryAsset;
/* @var $this yii\web\View */
/* @var $searchModel common\models\HescologSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'DCO / RCO';
$this->params['breadcrumbs'][] = $this->title;
?>
<section class="content-header">
<h1>DCO / RCO List</h1>
</section>
<section class="content">
<div class="box">
<div class="box-body">


<p>

<?= Html::a('Disconnect', ['dco'], ['class' => 'btn btn-success', 'id'=>'dco']) ?>
<?= Html::a('Re-Disconnect', ['rco'], ['class' => 'btn btn-info','id'=>'rco']) ?>
</p>

<?php Pjax::begin(); ?>
<div class="pre-scrollable">
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [


['class' => 'yii\grid\CheckboxColumn', 'checkboxOptions' => function($d) {
return ['value' => $d['msn']];
}],


'ref_no',
'dept_code:ntext',
'dept_name:ntext',

'allowed_units',
'msn',

'units_consumed',
[
'label' => 'Disconnected',
'attribute' => 'disconnected',
'format'=>'raw',
'contentOptions' => ['style'=>'text-align:center'],
'value' => function($model){
return $model->disconnected == 1 ? '<span class="glyphicon glyphicon-ok text-success"></span>' : '<span class="glyphicon glyphicon-remove text-danger"></span>';
},
'filter' => Html::activeDropDownList($searchModel, 'disconnected', [''=>'All','1'=>'Yes','0'=>'No'], ['class' => 'form-control']),
],

'diconnected_at',
'reconnected_at',
'active_energy_total_m',


['class' => 'yii\grid\ActionColumn'],
],
]); ?>
</div>
<?php Pjax::end(); ?>

</div>
</div>
</section>
<?php

$DCOurl = Url::toRoute(['/hescolog/dco']);
$RCOurl = Url::toRoute(['/hescolog/rco']);

$script = <<< JS
$(document).ready(function () {
//DCO
$('#dco').on('click',function(e) {


e.preventDefault();
var strValue = "";
$('input[name="selection[]"]:checked').each(function() {

if(strValue!=="")
{
strValue = strValue + " , " + this.value;

}
else
strValue = this.value;

});



$.ajax({
url: $DCOurl,
type: 'POST',
dataType: 'json',
data: {data:strValue},
success: function(data) {
alert(data);
}
});


});

$('#rco').on('click',function(e) {

e.preventDefault();
var strValue = "";
$('input[name="selection[]"]:checked').each(function() {

if(strValue!=="")
{
strValue = strValue + " , " + this.value;

}
else
strValue = this.value;

});

$.ajax({
url: '$RCOurl',
type: 'POST',
dataType: 'json',
data: {data:strValue},
success: function(data) {
alert(data);
}
});
});

});
JS;
$this->registerJs($script, static::POS_END);
?>

我一定是做错了什么我不理解

任何帮助将不胜感激。

最佳答案

首先 url:'$DCOurl' 是正确的并且url必须是单个或 双引号。所以你有一个未找到的问题:

  • 您的项目是在 htdocs 还是 www 后跟 /inventory-web/backend/ 或者还有更多目录?您使用相对 url,因此 url 将用于 ex: localhost/inventory-web/backend/web/...
  • ajax 类型 'POST' 应该与 behaviors['verbs']['actions'] 匹配,如果你已经设置的话
  • 检查 Controller 文件名、类名和命名空间

关于javascript - 无法将数据从 View 发布到 Yii2 中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56196185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com