2013-05-13 34 views
1

我從我的jQuery函數發送一個值到我的身體,但似乎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']; 

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

+0

你確定tz中有一個值。你是否設置了一個警報聲明並驗證其價值? – Harish 2013-05-13 17:43:19

+0

嘗試將您的代碼從'$(document).ready'中移出。 – 2013-05-13 17:43:29

+0

@codeinzone我相信tz有價值。或者,即使我刪除它,並將一些手動值,然後它也不能工作 – 2013-05-13 17:45:47

回答

1

PHP GET會從該網址的價值,所以當你使用jQuery.load,頁面有數據,但您的網址沒有任何GET請求數據,由於這,該會話將永遠不會被設置。

如果您想以這種方式設置會話,只需將頁面重定向到您想要的URL並設置會話即可。

因此,代替這樣做:

jQuery的( '主體')的負載( '?的index.php會話名稱=' + tz.name());

重定向到您的頁面獲取值:

了window.location = '?index.php的會話名稱=' + 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']; 
+0

我可以更新您的答案發送請求到timestamp.php頁面使用ajax,在這個頁面我將設置會話值。 – 2013-05-13 18:03:09

0

您是否嘗試發送該參數爲POST呢?這將是這樣的:

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