1

我正在从我的 jQuery 函数向我的身体发送一个值,但似乎 jQuery 没有发送该值。我想在我的页面加载时触发以下 jQuery 函数:

 <!DOCTYPE html>
    <html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

  <script type="text/javascript" src='http://cdn.bitbucket.org/pellepim/jstimezonedetect/downloads/jstz-1.0.4.min.js'></script>
        <script>
            $(document).ready(function(){  
                var tz = jstz.determine(); // Determines the time zone of the browser client 
                jQuery('body').load('index.php?session_name='+tz.name());
            });
        </script>

    </head>
    <body>

索引.php:

<?php
session_start();

if (isset($_GET['session_name'])) {$_SESSION['session_name'] = $_GET['session_name'];} 
echo $_SESSION['session_name'];

……………………………………………………………………………………

4

2 回答 2

1

PHPGET从 URL 中获取值,因此当您使用 时jQuery.load,页面有数据但您的 URL 没有任何GET请求数据,因此永远不会设置会话。

如果您想以这种方式设置会话,只需将页面重定向到您想要的 URL 即可设置会话。

所以,而不是这样做:

jQuery('body').load('index.php?session_name='+tz.name());

使用获取值重定向到您的页面:

window.location = 'index.php?session_name='+tz.name();

使用 jQuery 的更好方法是将请求异步发送到页面,这样您就不必重新加载页面。

最简单的 AJAX 方式:

$.ajax({
  type: "POST",
  url: "index.php",
  data: { session_name: tz.name() }
}).done(function( msg ) {
 // alert( "Session Saved: " + msg );
  console.log(msg);
});

还有你的 PHP:

if (isset($_POST['session_name'])) {$_SESSION['session_name'] = $_POST['session_name'];} 
echo $_SESSION['session_name'];
于 2013-05-13T17:51:38.163 回答
0

您是否尝试过将该参数作为 a 发送POST?它会是这样的:

$("body").load("index.php", {param1:value, param2:value, etc.})
于 2013-05-13T17:56:02.743 回答