Yii-ajaxLink从下拉列表中传递参数,并使用POST方法提交



我想从下拉列表中检索选定的值,并通过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令牌无法验证"错误。

期待您的回复。

将所有内容放在一个表单中并提交(通过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中执行任何需要的munging。

如果你需要一个提交类型的项目,我会使用ajaxSubmitButton()而不是ajaxLink(),然后你就可以获得所有的表单数据。

最新更新