我正在使用Symfony 1.3編寫一個Web應用程序。在我通過jQuery的$.ajax()
調用調用操作後,我的會話變量出現問題。事情發生在這個順序:Symfony,jQuery.ajax()調用,會話變量丟失
的動作設置這樣的會話變量:
$this->getUser()->setAttribute('uploaded-files', $uploadedFiles);
然後,當操作調用視圖組件,生成的HTML頁面包含以下電話:
$.ajax({ type: "POST", url: '<?php echo url_for("content/merge"); ?>', cache: false, success: mergingCompleteCallback });
我點擊觸發上述ajax調用的按鈕。該調用執行相應的操作方法,但是當我打印出'uploaded-files'會話變量的內容時,它是空的。
我還檢查了會話ID是否在設置變量的頁面調用和讀取變量(ajax調用)的頁面的調用之間保持不變,而會話ID沒有變化。我在網上搜索幾個小時,但無法找到解決方案。
如何打印出內容,內容是什麼?由於ajax請求使用與其他任何請求相同的會話cookie,所以沒有理由說明爲什麼會話變量會因Ajax而丟失,而不是通常的請求。 – Gerry
嗨。 AJAX調用只是通過回調函數返回一個文件的路徑。 URL請求調用一個調用系統調用pdftk(一些參數)的動作,然後用路徑返回一個回調給一個文件名。我遇到的問題是位於url_for(「content/merge」)的動作沒有看到會話變量($ this-> getUser() - > getAttribute('attr_name');)。但是,當我通過直接在瀏覽器中輸入URL來運行此命令,從而不使用AJAX時,會話變量會正確加載。這讓我感到困惑。我預計你描述的行爲是一樣的。謝謝! – pkout
也許你會話cookie是httponly,是這種情況下jquery不能發送它。 –