我想从下拉列表中检索选定的值,并通过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令牌无法验证”错误。
期待您的回复。
答案 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(),然后您将获得所有表单数据。