[英]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)
}'
]
);
我也想发送选定的数据,不知道在哪里写。
在控制器中,我有此操作
public function actionA_action() {
$data = "TTT";
return $data;
}
现在,当我在“ DropDown”列表中选择某项时, test_div
没有任何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
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.