我正在构建一个Symfony 2应用程序。我有一个带有一个复选框的表单,我想通过jquery ajax提交。一切正常,但是向我的控制器发送复选框输入的实际值存在问题。它可以被选中或取消选中,但每次都有一个TRUE值。
这是我的JS代码:
$( 'form' ).submit( function( e ) {
e.preventDefault();
var values = {};
$.each( $('input, select ,textarea', '#modal form'), function(i, field) {
values[field.name] = field.value;
});
//when I send var "values" into firebug console, there is real value, but later in controller isnt
$.ajax({
type : $(this).attr( 'method' ),
url : $(this).attr( 'action' ),
data : values,
dataType : "json",
cache : false,
success : function(response) {
//some code
}
});
这是我的控制器:
public function indexAction()
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('MyBundle:MyEntity');
$slides = $repo->findAll();
$form = $this->createForm(new MyFormType($this->get('router')));
if ( $request->isMethod( 'POST' ) ) {
$form->handleRequest( $request );
if ( $form->isValid() ) {
$data = $form->getData();
//In $data['active'], what is my checkbox field is always TRUE value :(
//another operation with data...
$response['something'] = something;
return new JsonResponse( $response );
}
return array('slides'=>$slides,'form' => $form->createView());
}
我编辑的其他字段(text,textarea)被正确发送到控制器中。问题仅出现在复选框字段中。
答案 0 :(得分:1)
如果取消选中,您通常不会向服务器发送复选框值。例如,将Javascript更改为:
$.each( $('input, select ,textarea', '#modal form'), function(i, field) {
if(!$(this).is(':checkbox') || $(this).is(':checked')) {
values[field.name] = field.value;
}
});
在PHP中:
if(isset($data['active'])) {
// it was checked...
} else {
// it was not checked...
}