2017-06-16 56 views
0

我有一個頁面上有選項卡。每個選項卡上都有幾個表單。在表單上,​​用戶可以設置過濾器。例如,「讓我看看(10,25,100)結果」Jquery ajax設置一些會話變量,然後觸發點擊

的,當用戶輸入一個值,我火了一個PHP腳本,設置會話變量

$_SESSION['filter'] = $_POST['filter']; 

Ajax調用的成功調用Ajax將觸發選項卡中單擊獲取到用戶在表單:

$.ajax({ 
     type:"POST", 
     data:"filter="+filter, 
     url:"actions/Tickets/filters.php", 
     success:function(result){ 
     $('#someTab').trigger('click'); 
     } 
}); 

我遇到的問題是,如果我

print_r($_SESSION); 

在窗體上的頁面上,我看不到$ _SESSION ['filter']值的任何更改。

我認爲發生的事情是ajax沒有等待腳本完成,所以SESSION var永遠不會被設置。異步不是一種選擇。我該如何實現這個目標?

如何使用ajax腳本調用php文件來設置SESSION變量,然後觸發導航選項卡上的單擊事件。

+0

Ofcourse你不能指定這樣的,因爲js是客戶端腳本和php是服務器端,你可以分配php變量爲js變量,但不反之亦然 –

+0

嘗試做$ _SESSION ['filter'] = $ _POST [「filter」] ; –

回答

0

正如您在您設置使用會話的評論都表示:

$_SESSION['filter'] = $_POST['filter']; 

比,我認爲這個問題是,當你在PHP設置會話uisng Ajax調用,比你只能得到通過使用另一個Ajax調用或頁面刷新後更新的會話。所以做一個另一個Ajax調用,看看會發生什麼。

+0

是的,我寫到,以縮短整個問題。我對這種混亂表示抱歉。設置會話變量的php腳本是$ _SESSION ['filter'] = $ _POST ['filter']; – bart2puck

+0

檢查更新的答案 –

+0

好的會做,謝謝。 – bart2puck

0

您不能在javascript中分配會話,因爲javascript發生在客戶端,會話存儲在服務器端。 所以,你不可能在js中使用php變量。

<?php 
$_SESSION['filter'] = "foo"; 
?> 

然後你就可以在js使用這個會話變量。但是你不能做反之亦然。您無法將js的會話分配到php

您可以使用jquery將值從js設置爲html,但是這種情況是不可能的。

編輯: -

所以,在filter.php設置會話變量。

$_SESSION['filter'] = "foo"; 

然後後,當結果retured重新加載頁面。由於會話集必須重新加載頁面。我不確定,但可能會有效。

$.ajax({ 
     type:"POST", 
     data:"filter="+filter, 
     url:"actions/Tickets/filters.php", 
     success:function(result){ 
     $('#someTab').trigger('click'); 
     location.reload(); // reload the page 
     } 
}); 
+0

正確,js調用php腳本。 PHP設置一些變量。然後js通過觸發器('click')重新加載頁面。那個頁面現在不會重新加載新的會話變量嗎?我應該添加,標籤上的點擊事件是一個獨立的ajax調用,它調用表單頁面。 – bart2puck

0

Ofcourse,你不能分配一樣,因爲JS是客戶端腳本& PHP是服務器端,您可以將PHP變量js的變量,但反之則不行

您需要使用此:

$_SESSION['filter'] = $_POST["filter"];

這篇文章可以幫助你: Set php session via ajax

+0

正確,js調用php腳本。 PHP設置一些變量。然後js通過觸發器('click')重新加載頁面。那個頁面現在不會重新加載新的會話變量嗎?我應該添加,標籤上的點擊事件是一個獨立的ajax調用,它調用表單頁面。 – bart2puck

+0

@ bart2puck plz按照我編輯的答案中的鏈接,可以幫助你。 –