簡體   English   中英

Yii2 Ajax .post從下拉列表到控制器的視圖列表以及接收數據時的一些操作

[英]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( &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 }

最終更新

我在此代碼的最后一個字符串上添加了一個右括號,如您所見,其中有兩個現在正在關閉,這就是問題所在。 分號也將是一個加號,但我測試過的代碼在沒有它的情況下可以正常工作。 問題在於右括號。

 '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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM