【发布时间】:2016-03-08 05:47:28
【问题描述】:
我正在使用 Symfony2 并执行 Ajax 调用来处理表单。我遇到的问题是,通过使用返回给我的JsonResponse,驱动程序告诉我该值未定义。我想知道我在解决这个问题方面做错了什么,以及是否可以以某种方式将错误返回到表单字段以从 Ajax 验证可以在不刷新页面的情况下在表单中显示失败。
控制器:
public function createAction(Request $request){
$entity = new Student();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return new JsonResponse(array('message' => 'Success!'), 200);
}
return $this->render('BackendBundle:Student:new.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
Ajax 调用:
$('.form_student').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: Routing.generate('student_create'),
data: $(this).serialize(),
success: function(response) {
alert(response.message);
},
error: function (xhr, desc, err){
alert("error");
}
})
return false;
});
【问题讨论】:
-
你试过调试它吗?尝试在 createAction 方法的第一行执行
echo json_encode(['message' => 'success']; exit。 -
嗨@Robert,请原谅我的无知,因为我是新手,我将
echo json_encode(['message' => 'success'];放在 createAction 方法的第一行并给了我错误。是你的意思吗? -
不,他的意思是将
return new JsonResponse(array('message' => 'Success!'), 200);更改为echo new JsonResponse(array('message' => 'Success!'), 200); exit;。然后是正确的你的网址url: Routing.generate('student_create')? -
嗨@hendrathings,我试过你说的,未定义的值仍然存在,AJAX调用执行成功但不知道,因为没有获得响应的值。网址正确。
标签: javascript php jquery ajax symfony