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 请求) - 然后表单将照常发布,您不必修改任何值。或者,您可以通过 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(),然后您将获得所有表单数据。

于 2012-08-01T16:31:44.380 回答