Yii2 Ajax。来自dropdownList的控制器,以及接收数据时的一些动作

时间:2015-01-03 17:39:07

标签: jquery ajax post drop-down-menu yii2

我有一个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)
        }'
    ]
);

此外,我想发送所选数据,并且不知道在哪里写。

在Controller中我有这个动作

 public function actionA_action() {
     $data = "TTT";
     return $data;
 }

现在,当我在DropDown列表中选择某些内容时,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( &quot;/users/A_action&quot;,function(){
                $(&quot;#test_div&quot;).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 }

最终更新

我已在此代码的最后一个字符串上添加了一个结束括号,其中有两个正在关闭,如您所见,这就是问题所在。 Semicolumn也将是一个优势,但我已经测试过代码可以正常工作。问题在于结束。

 'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl(["users/A_action"]).'",function(data){
                    $("#test_div").html( data );
                    })']);

3 个答案:

答案 0 :(得分:6)

我相信你有一个javascript错误。你其实也应该有很多。

你这样做

'onchange' => '$.post(Yii::$app->urlManager->createUrl . "users/A_action"), function(data) {
            $("#test_div").html(data)
        }'

您实际上并未调用Yii :: $ app-&gt; urlManager-&gt; createUrl您只是将其用作字符串。

你可能需要像

这样的东西
...
['onchange' => '$.post("'.Yii::$app->urlManager->createUrl(["users/A_action"]).'", function( data ) {
      $("#test_div").html( data );
     })']);

答案 1 :(得分:0)

简单地添加一个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)
             }
        });
    });");?>

答案 2 :(得分:0)

只需浏览这些代码,您就可以了解正常工作

    $(document).ready(function () {
        $(document.body).on('change', 'yourid', function () {   
            var val = $('yourid': selected').val(); 
            if(val == 'I' ) {
                something
            } else if(val == 'B' ){
                something
            }
        });
    });