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

时间:2012-08-01 16:21:52

标签: jquery yii

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

期待您的回复。

1 个答案:

答案 0 :(得分:1)

将所有内容放入表单并提交(通过AJAX请求) - 然后表单将照常发布,并且您不必删除任何值。或者,您可以通过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中进行任何修改。

如果您需要提交类型项,我将使用ajaxSubmitButton()而不是ajaxLink(),然后您将获得所有表单数据。