Yii2 Ajax。从dropdown视图中发送到控制器,并在接收数据时执行一些操作

我有一个DropDown列表。 我写了代码,但它没有用。 请帮我解决一下:

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.现在我正在使用此代码

 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以下列方式形成

  Please Choose item 1 item 2  

但是当我在调试中选择一些东西时,这个字符串会突出

  item 2 

并且有一个错误说

 Uncaught SyntaxError: Unexpected token } 

最后更新

我在这段代码的最后一个字符串上添加了一个结束括号,其中有两个正在关闭,你可以看到,这就是问题所在。 Semicolumn也将是一个加号,但我已经测试了代码工作没有它确定。 问题在于结束。

  '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块,它更干净:

 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 } }); });