Yii2 Ajax .post 从视图的 dropdownList 到控制器,并在接收数据时采取一些行动
Yii2 Ajax .post to controller from dropdownList of view and some action upon receiving data
我有一个下拉列表。我已经编写了代码,但它不起作用。请帮助我修复它:
echo $form->field($model, 'Adrop')->dropDownList(
[
'' => 'Please Choose',
'1' => 'item 1',
'2' => 'item 2'
],
[
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
]
);
我也想发selected数据,不知道往哪里写。
在控制器中我有这个动作
public function actionA_action() {
$data = "TTT";
return $data;
}
现在,当我 select 下拉列表中的内容时,我的 test_div
中没有任何反应 :(
更新
感谢 Mihai P。现在我正在使用这个代码
<?php
echo $form->field($model, 'Adrop')->dropDownList(
[''=>'Please Choose','1'=>'item 1','2'=>'item 2'],
[
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data )
}']);
?>
HTML的构成方式如下
<select id="A-adrop" class="form-control" name="A[Adrop]" onchange="$.post( "/users/A_action",function(){
$("#test_div").html( data )
}">
<option value="">Please Choose</option>
<option value="1">item 1</option>
<option value="2">item 2</option>
</select>
但是当我选择某样东西时
在调试中,这个字符串被突出显示
<option value="2">item 2</option>
并且有一个错误说
Uncaught SyntaxError: Unexpected token }
最终更新
我在这段代码的最后一个字符串上添加了一个右括号,如您所见,现在有两个右括号结束了,这就是问题所在。分栏也将是一个加号,但我已经测试过代码在没有它的情况下也能正常工作。问题出在右括号中。
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data );
})']);
好吧,我确定你遇到了 javascript 错误。其实你也应该有很多。
你正在做这个
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
您实际上并没有调用 Yii::$app->urlManager->createUrl,您只是将它用作字符串。
您可能需要
...
['onchange' => '$.post("'.Yii::$app->urlManager->createUrl(["users/A_action"]).'", function( data ) {
$("#test_div").html( data );
})']);
简单的加一个JS块,就干净多了:
<?php $this->registerJs("
jQuery(function($){
$('select[name=Adrop]').on('change', function(){
$.post(Yii::$app->urlManager->createUrl . 'users/A_action'),
function(data) {
$('#test_div').html(data)
}
});
});");?>
只要看一遍这些代码,你就会明白工作原理
$(document).ready(function () {
$(document.body).on('change', 'yourid', function () {
var val = $('yourid': selected').val();
if(val == 'I' ) {
something
} else if(val == 'B' ){
something
}
});
});
我有一个下拉列表。我已经编写了代码,但它不起作用。请帮助我修复它:
echo $form->field($model, 'Adrop')->dropDownList(
[
'' => 'Please Choose',
'1' => 'item 1',
'2' => 'item 2'
],
[
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
]
);
我也想发selected数据,不知道往哪里写。
在控制器中我有这个动作
public function actionA_action() {
$data = "TTT";
return $data;
}
现在,当我 select 下拉列表中的内容时,我的 test_div
中没有任何反应 :(
更新 感谢 Mihai P。现在我正在使用这个代码
<?php
echo $form->field($model, 'Adrop')->dropDownList(
[''=>'Please Choose','1'=>'item 1','2'=>'item 2'],
[
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data )
}']);
?>
HTML的构成方式如下
<select id="A-adrop" class="form-control" name="A[Adrop]" onchange="$.post( "/users/A_action",function(){
$("#test_div").html( data )
}">
<option value="">Please Choose</option>
<option value="1">item 1</option>
<option value="2">item 2</option>
</select>
但是当我选择某样东西时 在调试中,这个字符串被突出显示
<option value="2">item 2</option>
并且有一个错误说
Uncaught SyntaxError: Unexpected token }
最终更新
我在这段代码的最后一个字符串上添加了一个右括号,如您所见,现在有两个右括号结束了,这就是问题所在。分栏也将是一个加号,但我已经测试过代码在没有它的情况下也能正常工作。问题出在右括号中。
'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
$("#test_div").html( data );
})']);
好吧,我确定你遇到了 javascript 错误。其实你也应该有很多。
你正在做这个
'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
$("#test_div").html(data)
}'
您实际上并没有调用 Yii::$app->urlManager->createUrl,您只是将它用作字符串。
您可能需要
...
['onchange' => '$.post("'.Yii::$app->urlManager->createUrl(["users/A_action"]).'", function( data ) {
$("#test_div").html( data );
})']);
简单的加一个JS块,就干净多了:
<?php $this->registerJs("
jQuery(function($){
$('select[name=Adrop]').on('change', function(){
$.post(Yii::$app->urlManager->createUrl . 'users/A_action'),
function(data) {
$('#test_div').html(data)
}
});
});");?>
只要看一遍这些代码,你就会明白工作原理
$(document).ready(function () {
$(document.body).on('change', 'yourid', function () {
var val = $('yourid': selected').val();
if(val == 'I' ) {
something
} else if(val == 'B' ){
something
}
});
});