大家好日子。 我在symfony3中遇到了ajax请求的问题。 在这种情况下,它返回代码200,一切正常。这是“脏”代码示例,但是使用“好”代码我会得到代码500的响应。我知道this语法更合适。所以问题是如何修复适用于symfony文档的语法。
/**
* @Route("/ajax", name="ajax_handler")
*/
public function ajaxAction(Request $request) {
if ($request->isXMLHttpRequest()) {
if(isset($_POST['secret']))
echo json_encode(array('ok'=>1));
exit;
}
}
为什么我会编写适合“所有已知”的语法代码,它将返回代码500?
/**
* @Route("/ajax", name="ajax_handler")
*/
public function ajaxAction(Request $request) {
if ($request->isXMLHttpRequest()) {
// echo json_encode(array('ok' => 1));
// exit;
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
JavaScript的:
$(document).ready(function () {
$(".add-one-email").click(function () {
var data = {"test": 1};
data = $.param(data);
$.ajax({
type:"POST",
dataType:"JSON",
url:"/ajax",
data: data,
success:function (s) {
alert(s['ok']);
}
});
});
});
if ($request->isXMLHttpRequest()) {
$response = new Response('sadasdasd');
return $response;
}
In upper case it returns 500 StuckTrace:The controller must return a response | in vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php at line 171 | if (null === $response) {
$msg .= ' Did you forget to add a return statement somewhere in your controller?';
}
throw new \LogicException($msg);
答案 0 :(得分:0)
此语法效果很好
use Symfony\Component\HttpFoundation\JsonResponse;
return new JsonResponse(array('ok' => 1));
问题是我使用的是旧语法,看起来它在symfony3中不起作用,但这段代码效果很好。