코드 숨김 Session
에서 일부 데이터로 설정 했습니다.
Session["usedData"] = "sample data";
그리고 질문은 어떻게하면 자바 스크립트에서 세션 값 (예 : "샘플 데이터")을 가져 와서 Session["usedData"]
새 값으로 설정할 수 있습니까?
코드 숨김 Session
에서 일부 데이터로 설정 했습니다.
Session["usedData"] = "sample data";
그리고 질문은 어떻게하면 자바 스크립트에서 세션 값 (예 : "샘플 데이터")을 가져 와서 Session["usedData"]
새 값으로 설정할 수 있습니까?
답변:
Javascript를 사용하여 세션 변수 액세스 및 할당 :
Javascript를 사용하여 ASP.NET 세션 변수 할당 :
<script type="text/javascript">
function SetUserName()
{
var userName = "Shekhar Shete";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"] %>');
}
</script>
Javascript를 사용하여 ASP.NET 세션 변수에 액세스 :
<script type="text/javascript">
function GetUserName()
{
var username = '<%= Session["UserName"] %>';
alert(username );
}
</script>
+ userName +
Session
JavaScript에서는 직접 액세스 할 수 없습니다 .
숨겨진 필드를 만들어 페이지에 전달한 다음 JavaScript를 사용하여 document.getElementById
Javascript는 세션 값을 직접 설정할 수 없습니다. 자바 스크립트에서 세션 값을 설정하기 위해 다음과 같이 ajax 호출을 수행합니다.
ASPx 파일 또는 html에서
<script type="text/javascript">
$(function(){
//Getting values from session and saving in javascript variable.
// But this will be executed only at document.ready.
var firstName = '<%= Session["FirstName"] ?? "" %>';
var lastName = '<%= Session["LastName"] ?? "" %>';
$("#FirstName").val(firstName);
$("#LastName").val(lastName);
$('Button').click(function(){
//Posting values to save in session
$.post(document.URL+'?mode=ajax',
{'FirstName':$("#FirstName").val(),
'LastName':$("#LastName").val()
} );
});
});
서버 측에서
protected void Page_Load(object sender, EventArgs e)
{
if(Request.QueryString["mode"] != null && Request.QueryString["mode"] == "ajax")
{
//Saving the variables in session. Variables are posted by ajax.
Session["FirstName"] = Request.Form["FirstName"] ?? "";
Session["LastName"] = Request.Form["LastName"] ?? "";
}
}
Shekhar와 Rajeev가 말한 것처럼 세션 값을 얻기 위해
var firstName = '<%= Session["FirstName"] ?? "" %>';
도움이 되었기를 바랍니다.
이 시도
var sessionValue = '<%=Session["usedData"]%>'
"클라이언트 측 JavaScript"를 의미한다고 가정하면 적어도 직접적으로는 불가능합니다.
세션 데이터는 서버에 저장되므로 클라이언트 측 코드는 서버와 통신하지 않고는 볼 수 없습니다.
액세스하려면 HTTP 요청을하고 서버 측 프로그램이 데이터를 수정 / 읽고 반환하도록해야합니다.
먼저 세션을 설정하기 위해 코드 뒤에 메서드를 만듭니다.
[System.Web.Services.WebMethod]
public static void SetSession(int id)
{
Page objp = new Page();
objp.Session["IdBalanceSheet"] = id;
}
그런 다음 클라이언트 측에서 호출하십시오.
function ChangeSession(values) {
PageMethods.SetSession(values);
}
EnablePageMethods를 true로 설정해야합니다.
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
서버 측에서 .php 파일을 사용한다고 가정하고 세션 변수에 액세스하기위한 매우 간단한 솔루션을 찾을 때까지이 문제에 대한 해결책을 찾고있었습니다. 질문의 일부에 답하기를 바랍니다.
액세스 세션 값
<script type="text/javascript">
var value = <?php echo $_SESSION['key']; ?>;
console.log(value);
</script>
편집 : "codespace"탭에서 phpfiddle.org에서 시도 할 수있는 아래의 더 나은 예
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
$_SESSION['key'] = 10;
$i = $_SESSION['key'];
?>
</head>
<body>
<p id="affichage">hello</p>
<script type="text/javascript">
var value = <?php echo $i; ?>;
$("#affichage").html(value);
</script>
</body>
</html>
세션 값 설정
원하는대로 변수를 전달합니다. 예 :
$you = 13;
$_SESSION['user_id'] = $you;
이것은 작동해야하지만 테스트하지 않았습니다.
이것은 속임수이지만 이것을 할 수 있습니다. 값을 매개 변수로 서버 측에 보냅니다.
<script>
var myVar = "hello"
window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side
</script>
그리고 서버 측에서 매개 변수를 검색합니다.
string myVar = Request.QueryString["param"];
Session["SessionName"] = myVar;
도움이 되었기를 바랍니다
여기에 저에게 효과적이었습니다. Javascript에는 이것이 있습니다.
<script type="text/javascript">
var deptname = '';
</script>
C # 코드 뒤에는 이것이 있습니다-마스터 페이지에 놓을 수 있으므로 페이지 변경시 var를 재설정합니다.
String csname1 = "LoadScript";
Type cstype = p.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = p.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
String cstext1 = funct;
cs.RegisterStartupScript(cstype, csname1, "deptname = 'accounting'", true);
}
else
{
String cstext = funct;
cs.RegisterClientScriptBlock(cstype, csname1, "deptname ='accounting'",true);
}
이 코드를 버튼 클릭에 추가하여 부서 이름이 변경되었는지 확인합니다.
alert(deptname);
내 .php 파일을 사용하여 세션에 필수 항목을 넣었습니다.
$ _SESSION [ '이름'] = $ phparray [ "이름"]; $ ajaxoutput [ 'name'] = $ phparray [ "이름"];
내 .js 파일에서 내가 사용한
sessionStorage.setItem ( "name", ajaxreturnedarray [ "name"]);
그리고 나는 이것을 사용하여 검색했습니다.
var myName = sessionStorage.getItem ( "name");
다른 .js 파일 또는 동일한 .js 파일
그대로 유지하면 로그 아웃 한 경우에도 항상 동일하게 반환됩니다. 그래서 로그 아웃하면서
sessionStorage.setItem ( "이름", "");
이것을 사용하여 지역 변수를 비 웠습니다. 단일 페이지 웹 사이트 로그인 / 로그 아웃 세션에서이 프로세스를 사용했습니다. 저에게 효과가 있었기 때문에이 방법이 효과가 있기를 바랍니다. PLZ 당신의 경험을 알려주십시오.
페이지 생성 후 서버에서 세션 데이터를 수정하려면 AJAX 또는 JQuery를 사용하여 작업을 완료해야합니다. 둘 다 서버에 연결하여 세션 데이터를 수정하고 해당 연결에서 반환 된 데이터를 가져올 수 있습니다.
<?php
session_start();
$_SESSION['usedData'] = "Some Value"; //setting for now since it doesn't exist
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Modifying PHP Session Data</title>
<script type='text/javascript'>
var usedData = '<?php echo $_SESSION['usedData']; ?>';
var oldDataValue = null;
/* If function used, sends new data from input field to the
server, then gets response from server if any. */
function modifySession () {
var newValue = document.getElementById("newValueData").value;
/* You could always check the newValue here before making
the request so you know if its set or needs filtered. */
var xhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
oldDataValue = usedData;
usedData = this.responseText; //response from php script
document.getElementById("sessionValue").innerHTML = usedData;
document.getElementById("sessionOldValue").innerHTML = oldDataValue;
}
};
xhttp.open("GET", "modifySession.php?newData="+newValue, true);
xhttp.send();
}
</script>
</head>
<body>
<h1><p>Modify Session</p></h1>
Current Value: <div id='sessionValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>
Old Value: <div id='sessionOldValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>
New Value: <input type='text' id='newValueData' /><br/>
<button onClick='modifySession()'>Change Value</button>
</body>
</html>
이제 세션 데이터를 변경하고 필요한 경우 데이터를 다시 게시하기 위해 modifySession.php라는 작은 PHP 스크립트를 만들어야합니다.
<?php
session_start();
$_SESSION['usedData'] = $_GET['newData']; //filter if necessary
echo $_SESSION['usedData']; // Post results back if necessary
?>
이렇게하면 PHP / AJAX를 사용하여 서버 측을 통해 세션을 수정하여 원하는 결과를 얻을 수 있습니다.
간단한 URL 매개 변수와 자동 새로 고침으로 비슷한 문제를 해결할 수있었습니다.
URL 매개 변수에서 값을 가져 와서 원하는대로 수행하고 페이지를 새로 고칠 수 있습니다.
HTML :
<a href=\"webpage.aspx?parameterName=parameterValue"> LinkText </a>
씨#:
string variable = Request.QueryString["parameterName"];
if (parameterName!= null)
{
Session["sessionVariable"] += parameterName;
Response.AddHeader("REFRESH", "1;URL=webpage.aspx");
}
<?php
session_start();
$_SESSION['mydata']="some text";
?>
<script>
var myfirstdata="<?php echo $_SESSION['mydata'];?>";
</script>
이 접근 방식으로 약간의 마일리지가있을 수 있습니다. 이것은 날짜를 세션 변수로 되 돌리는 것 같습니다. 반환하는 문자열은 자바 스크립트 날짜를 표시하지만 문자열을 조작하려고하면 자바 스크립트 코드가 표시됩니다.
ob_start();
?>
<script type="text/javascript">
var d = new Date();
document.write(d);
</script>
<?
$_SESSION["date"] = ob_get_contents();
ob_end_clean();
echo $_SESSION["date"]; // displays the date
echo substr($_SESSION["date"],28);
// displays 'script"> var d = new Date(); document.write(d);'