为什么ajax返回代码500 [symfony3]

时间:2016-08-26 15:23:26

标签: javascript jquery ajax symfony

大家好日子。 我在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;
        }
    }

enter image description here

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);

1 个答案:

答案 0 :(得分:0)

此语法效果很好

use Symfony\Component\HttpFoundation\JsonResponse;

  return new JsonResponse(array('ok' => 1));

问题是我使用的是旧语法,看起来它在symfony3中不起作用,但这段代码效果很好。