2016-09-21 81 views
2

我正在使用Symfony 3.1,並嘗試使用AJAX設置會話屬性。我之前在控制器中保存了一些東西。現在,我創建了AJAX請求一個新的控制器,看起來像這樣:Symfony3:使用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,就沒有新的會話屬性。我也嘗試了一個cookie,它工作。所以我認爲它與一個錯誤的AJAX調用沒有任何關係,但是在控制器中有一個錯誤的會話處理。

有人有想法嗎?

+0

似乎一切正常,請在檢查會話屬性前嘗試刷新頁面 – Matteo

+0

重新加載頁面以查看新的會話屬性。 – malcolm

回答

1

查看瀏覽器的調試工具。

我假設你在Windows中使用Chrome,Ctrl+Shift+i打開Chrome的調試工具,單擊Network選項卡,然後做你的AJAX請求(點擊buttn $('.addIdButton')),然後調試工具會顯示一個新的記錄,檢查記錄您的請求確實沒問題(狀態爲200表示正常,否則失敗)