jquery函数没有在页面加载时发送值

时间:2013-05-13 17:40:31

标签: php jquery ajax

我正在从我的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>

的index.php:

<?php
session_start();

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

..............   ..............

2 个答案:

答案 0 :(得分:1)

PHP GET从网址获取值,因此当您使用jQuery.load时,该网页会显示数据但您的网址没有任何GET请求数据,因此,会话永远不会被设置。

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

所以,而不是这样做:

  

jQuery的( '主体')的负载( '的index.php会话名称=?' + 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'];

答案 1 :(得分:0)

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

$("body").load("index.php", {param1:value, param2:value, etc.})