Добрый день всем. У меня проблема с запросом ajax в symfony3. В этом случае он возвращает код 200 и все в порядке. Это «грязный» пример кода, но с «хорошим» кодом я получаю ответ с кодом 500. Я знаю, что этот синтаксис более уместен. Итак, вопрос в том, как исправить синтаксис, который применяется к документации 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);
echo json_encode(); die();
- person Yevhenii Shashkov   schedule 26.08.2016$name
не существует. - person Jonnix   schedule 26.08.2016$name
=1; проверено... уже... - person Yevhenii Shashkov   schedule 26.08.2016$name
не существует. Пожалуйста, проверьте это. - person yceruto   schedule 26.08.2016JsonResponse
все упрощает, вы должны это проверить. - person Emanuel Oster   schedule 26.08.2016BrowserKit\Response
? Если это не изменилось для Symfony3, я бы ожидал типHttpFoundation\Response
... Похоже, вы могли импортировать неправильное пространство имен. - person Jonnix   schedule 26.08.2016Symfony\Component\BrowserKit\Response;
, вероятно, ошибается. Наверное, хочет бытьSymfony\Component\HttpFoundation\Response
- person Jonnix   schedule 26.08.2016echo json_encode(array('ok'=>1));
покажите 200 в браузере, я могу использовать его, пока не решу BrowserKit - person Yevhenii Shashkov   schedule 26.08.2016exit
впоследствии, иначе у вас будет другая ошибка. Попробуйте исправить проблемы, а не просто обходить их - person Jonnix   schedule 26.08.2016return $this->json(array('ok' => 1));
- person malcolm   schedule 27.08.2016FOSJSRouting
- person Imanali Mamadiev   schedule 28.08.2016