2

我正在构建一个 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());
}

我编辑的其他字段(文本、文本区域)已正确发送到控制器。问题仅在复选框字段中。

4

1 回答 1

2

如果未选中,您通常不会将复选框值发送到服务器。例如将 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...
}
于 2013-08-09T08:06:51.173 回答