gpt4 book ai didi

javascript - Symfony 表单 AJAX 返回空对象

转载 作者:太空宇宙 更新时间:2023-11-04 15:50:48 25 4
gpt4 key购买 nike

我正在尝试使用 Symfony 创建 AJAX 表单,但我的表单返回空对象。当我发送手动写入的文本或数组时,一切正常。错误在哪里?我的表单出了问题,还是 javascript 代码有问题?

/**
* Renders the "new" form
*
* @Route("/", name="demo_new")
* @Method("GET")
*/
public function newAction(Request $request) {
$entity = new Demo();
$form = $this->createForm(DemoType::class, $entity);

return $this->render('default/new.html.twig', array(
'entity' => $entity,
'form' => $form->createView()
)
);
}

/**
*
* @Route("/", name="demo_create")
* @Method("POST")
*
*/
public function createAction(Request $request) {
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'You can access this only using Ajax!'), 400);
}

$entity = new Demo();
$form = $this->createForm(DemoType::class, $entity, array(
'action' => $this->generateUrl('demo_create'),
'method' => 'POST',
));

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return new JsonResponse(
[
'message' => 'Success!',
'data' => $data
], 200);
}

$response = new JsonResponse(
array(
'message' => 'Error',
'form' => $this->renderView('default/new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
))), 400);
return $response;
}
}

和 JavaScript 代码:

  function initAjaxForm()
{
$('body').on('submit', '.ajaxForm', function (e) {

e.preventDefault();

$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize()
})
.done(function (data) {
if (typeof data.message !== 'undefined') {
console.log(data.data);
console.log(data.message);
}
})
.fail(function (jqXHR, textStatus, errorThrown) {
if (typeof jqXHR.responseJSON !== 'undefined') {
if (jqXHR.responseJSON.hasOwnProperty('form')) {
$('#form_body').html(jqXHR.responseJSON.form);
}

$('.form_error').html(jqXHR.responseJSON.message);

} else {
alert(errorThrown);
}

});
});
}

最佳答案

今天在 2.8 版本中遇到了同样的问题,我将把它留在这里,以防它最终治愈其他人,我已将其添加到我的表单生成器中

/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return '';
}

关于javascript - Symfony 表单 AJAX 返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43136014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com