2012-08-01 105 views
0

我想从下拉菜单中检索选定的值,并通过POST方法使用Yii的ajaxLink函数传递它。Yii ajaxLink从下拉菜单中传递参数并使用POST方法提交

我可以在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

将所有内容放在表单中并提交(通过AJAX请求) - 然后表单将像往常一样发布,而且您不必陷入任何值。或者,你可以直接连接AJAX通过htmlOptions下拉菜单,例如:

<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(),然后您将获取所有表单数据。

相关问题