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