Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Symfony2:Ajax表单提交和下拉div刷新_Javascript_Jquery_Ajax_Forms_Symfony - Fatal编程技术网

Javascript Symfony2:Ajax表单提交和下拉div刷新

Javascript Symfony2:Ajax表单提交和下拉div刷新,javascript,jquery,ajax,forms,symfony,Javascript,Jquery,Ajax,Forms,Symfony,让我们从头开始 我有一个带有链接的选项卡平移布局。当你点击一个链接时,会有一个下拉复选框表单通过 $(".dropdown-toggle").click(function() { var projectId = $("#permission-form").attr("data-project-id"); var userId = $(this).attr('data-user-id'); renderModules(projectId, userId, userId);

让我们从头开始

我有一个带有链接的选项卡平移布局。当你点击一个链接时,会有一个下拉复选框表单通过

$(".dropdown-toggle").click(function() {
    var projectId = $("#permission-form").attr("data-project-id");
    var userId = $(this).attr('data-user-id');
    renderModules(projectId, userId, userId);
});

function renderModules(projectId, userId, divId)
{
    $.get(Routing.generate('module_change_permission', {projectId: projectId, userId: userId}))
    .success(function(msg) {
        $('#modules-'+divId).html(msg);
    });
}
模块\u更改\u权限路由导向控制器权限

public function moduleAction(Request $request, $projectId, $userId)
{
    $project = $this->get('api.client.manager')->getProject($projectId);
    if (null === $project) {
        throw new Exception("Invalid projectId");
    }

    $em = $this->getDoctrine()->getManager();

    $modulesInfo = $this->get('acme.modules.modulesinfo');

    $module = $modulesInfo->getModule($project, $projectId, $userId);
    if (null === $module) {
        $module = $modulesInfo->createModule($projectId, $userId);
    }

    $form = $this->createForm(new ModuleType($em), $module[0]);

    if ($this->getRequest()->isMethod('GET') && count($_GET)) {
        $form->bind($request);
        if ($form->isValid()) {
            $em->persist($module[0]);
            $em->flush();
        }

        $this->setFlash('modules_success', 'modules_controller.flash.success');

        return $this->redirect($this->generateUrl($this->path, array('id' => $projectId)));
    }

    return $this->render('AcmeProjectBundle:Module:module.html.twig',
        array(
            'form' => $form->createView(),
            'projectId' => $projectId,
            'userId' => $userId,
        )
    );
}
现在我想做同样的事情-提交表单,但不重定向(只刷新特定的div)。好吧,我应该使用AJAX。但问题是我不知道如何做提交部分的工作

我一直在尝试这样的事情:

$('.dropdown-menu-form').submit(function(e) {

var url = $(this).attr("action");

$.ajax({
    type: "PUT",
    url: url, // Or your url generator like Routing.generate('discussion_create')
    data: $(this).serialize(),
    dataType: "html",
    success: function(msg){

        alert("Success!");

    }
});

return false;
});

但是仍然不知道如何更改控制器部分。

您已经加入了ajax声明。因此,要获得由ajax发布的数据并将其放入Symfony控制器,请尝试使用
$data=$request->getContent()

也不要使用条件
$this->getRequest()->isMethod('GET')

或者您可以将PUT方法更改为GET(甚至POST),并像在moduleAction()控制器中一样处理结果