2015-10-05 73 views
0

我想要在頁面上單擊按鈕而不使用表單並重定向到其他頁面時更新會話屬性的值。在javascript中的onclick事件上更改現有會話變量的值,同時停留在同一頁上

我已經看過JSTL和scriptlets,但因爲這些發生在服務器端,它們已經發生在單擊按鈕之前。

我已經看過AJAX,但我不完全確定整個過程是如何工作的。

有關如何完成此任務的任何建議?

的東西,可以被納入:

function myFunction() 
{ 
    //setAttribute("session_variable_name", "newvalue") 
} 
<button onclick="myFunction()">Change Variable</button> 

回答

-1

PHP端代碼// the_php_file_that_change_your_session.php

<?php 
    if(isset($_POST["sessionVarName"]) && isset($_POST["sessionVarValue"])) 
    { 
     $_SESSION[$_POST["sessionVarName"]] = $_POST["sessionVarValue"] ; 
    } 
    exit(); 
?> 

JavaScript端代碼

function myFunction() 
{ 
    $.post("the_php_file_that_change_your_session.php",{sessionVarName:sessionVarName_Value,sessionVarValue:sessionVarValue},function() 
    { 
     // do what you want after the Session variable is changed 
    }); 
} 
+0

這不是一個PHP的問題。這是與jsp –

+0

這是一個Ajax問題。我使用php作爲例子,但他可以將其更改爲任何其他服務器語言 – Diptox

+0

然後可能應該刪除'PHP side code'並將其替換爲一般'serverside abstraction' –

1

Ajax是要走的路:

jQuery的AJAX:

var request = $.ajax({ 
    url: "/changesession.jsp", 
    type: "POST", 
    data: ["newSessionValue"=>'newSessionValue'], 
}); 

request.done(function(msg) { 
    alert('suceess changed'); 
}); 


request.fail(function(msg)) { 
    alert('failed ajax') 
}); 

而在你changesession.jsp

HttpSession session = request.getSession(); 
String newValue= ${param.newSessionValue}; 
setAttribute("session_variable_name", "newvalue"); 

希望這有助於。

+0

非常感謝!一個問題雖然不會在servlet中出現,但jsp: 'HttpSession session = request.getSession(); String newValue = $ {param.newSessionValue}; setAttribute(「session_variable_name」,「newvalue」);' –

+0

它可以是sevlet或jsp ..取決於你想在它後面看到什麼。如果你把它放在一個servelet中,那麼確保將URL改變爲指向那個特定的servlet。 –

相關問題