【问题标题】:Symfony3: Set Session Attribute with AJAXSymfony3:使用 AJAX 设置会话属性
【发布时间】:2017-01-29 10:36:19
【问题描述】:

我正在使用 Symfony 3.1,并尝试使用 AJAX 设置会话属性。我之前在控制器中保存了会话中的一些内容。现在我为 AJAX 请求创建了一个新控制器,如下所示:

AjaxController.php

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;


class AjaxController extends Controller {

    /**
     * @Route("/addId/{id}", name="addId")
     */
    public function hideCookieMessageAction(Request $request, $id) {

        $session = $request->getSession();
        $session->set('id', $id);

        $response = new Response();
        return $response;

    }

}

ajax.js

$(document).ready(function() {

    $('.addIdButton').click(function {

        var id = 1;

        $.ajax({
            type: 'POST',
            url: 'addId/' + id,
            async: false,
        })
        .fail(function() {
            alert('Couldn\'t add flat to wishlist');
        });

    });

});

我没有收到任何 AJAX 或 JS 错误消息。但是,如果我查看 Symfony Profiler,则没有新的会话属性。我也用饼干试了一下,效果很好。所以我认为这与错误的 AJAX 调用无关,而是与控制器中的错误会话处理有关。

有人有想法吗?

【问题讨论】:

  • 似乎都正确,在检查会话属性之前尝试刷新页面
  • 重新加载页面以查看新的会话属性。

标签: php jquery ajax symfony


【解决方案1】:

查看浏览器的调试工具。

我假设你在 Windows 中使用 Chrome,Ctrl+Shift+i 打开 Chrome 的调试工具,点击Network 选项卡,然后执行你的 AJAX 请求(点击按钮 $('.addIdButton')),然后调试工具将显示一条新记录,检查记录是否请求真的ok(状态为200表示ok,否则失败)

【讨论】:

    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多