0

ドロップダウンから選択した値を取得し、POSTメソッドを介してYiiのajaxLink関数を使用して渡したいと思います。

beforeSendたとえば、パーツの値を取得できます。

array( // ajaxOptions
    'type' => 'POST',
    'beforeSend' => "function() {                                  
         start_time = jQuery('#start_time').find(':selected').val();
         end_time = jQuery('#end_time').find(':selected').val();

         this.data += '&start_time='+start_time;
         this.data += '&end_time='+end_time;
    }",
    .......

文字列をフォーマットして渡し、コントローラーで解析することはできますが、CSRFからの保護を使用しており、パラメーターを単一の文字列として渡すと、「CSRFトークンを検証できませんでした」というエラーが発生します。

返信をお待ちしております。

4

1 に答える 1

1

すべてをフォームに入れて(AJAXリクエストを介して)送信します。そうすれば、フォームは通常どおりにPOSTを送信し、値を変更する必要はありません。または、htmlOptionsを使用してAJAXをドロップダウンに直接アタッチすることもできます。例:

<form>
<?php
    echo CHtml::listBox('field', '', $fieldData,
        array('ajax' => array(
            'type' => 'POST',
            'url' => Controller :: createUrl($controllerAction),
            'dataType'=>'json',
            'success'=>'function(data) { console.log(data) }'
            ),
        )
    );  
?>

このように、詳細はフォームPOSTを介して送信されます。値を送信した後、PHPで必要な変更を行うことができます。

送信タイプのアイテムが必要な場合は、ajaxLink()の代わりにajaxSubmitButton()を使用すると、すべてのフォームデータを取得できます。

于 2012-08-01T16:31:44.380 に答える