2012-08-23 37 views
0

我有我的網絡應用程序的瀏覽器版本,我有一些存儲在cookie中的值。現在我正在製作移動版本,而且看起來我的Cookie不起作用。 可以在移動設備上使用Cookie嗎?移動瀏覽器不支持會話變量?

我想執行這個代碼和我的PHP是給我一個空值:

$(document).ready(function() { 
    var session_lang= '<?php if(isset($_SESSION['SESS_LANGUAGE'])) 
          echo $_SESSION['SESS_LANGUAGE'];?>'; 
      if (session_lang!='') 
      { 
       check_and_change(session_lang); 
      } 
    }); 

是否有任何其他的方式將數據存儲在內存中,因此它可以作爲cookie的工作呢? 移動設備是否支持會話變量?我看着螢火蟲,我可以看到我可以創建會話變量,但是當我想讀取它時,它是空的。 什麼可能是一個問題,以及如何解決這個問題?

編輯: 我會把你幾乎完整的代碼,所以你可以看到我在做什麼...順便說一句。此代碼在PC瀏覽器上正常工作。

JavaScript文件:

$(document).ready(function() { 

    function languageChange() 
    { 
     var lang = $('#websites1 option:selected').val(); 

     return lang; 
    } 


    $('#websites1').change(function(e) {      

     var lang = languageChange(); 

     var dataString = 'lang=' + lang; 

     $.ajax({ 

      type: "POST", 
      url: "pass_value.php", 
      data: dataString, 
      dataType: 'json', 
      cache: false, 
      success: function(response) { 

        check_and_change(response.message); 
       } 
     }); 

     return false; 

    }); 

}); 

    function check_and_change(lang) 
    { 
      switch (lang) 
         { //do something 
          } 
    } 

那時,我在上面把這個第一部分是對我的目光,這是開放的實際PHP網站:

而最後一件事是pass_value.php :

<?php 
session_start(); 

$_SESSION['SESS_LANGUAGE'] = $_POST['lang']; 

print json_encode(array('message' => $_SESSION['SESS_LANGUAGE'])); 
die(); 
?> 

我真的不知道爲什麼這段代碼無法在手機上工作。

+0

會話ID可以通過cookie或通過GET方法傳遞,並且據我所知 - 移動設備上的瀏覽器確實支持cookie。你確定你的代碼真的有效嗎?你甚至開始了會議嗎? –

+0

[看看HTML 5 Web存儲(http://www.sitepoint.com/a-better-cookie-html5-and-web-storage/#fbid=PofM_1DrEuA) –

+0

所以不是保存到會話變量我正在保存到網絡存儲? –

回答

6

餅乾definitelywork在移動瀏覽器中。你說「我在看螢火蟲」,這讓我覺得你並不是真的在看電話。

你有started the sessionturned on error reporting

+0

嗨,我正在瀏覽器上,在iOS和Android設備上。好,讓我檢查你寫的那些東西。 –

+0

會話已啓動,但我沒有收到任何錯誤。 –

+0

然後'$ _SESSION ['SESS_LANGUAGE']'從不設置,或者在某處被覆蓋/刪除。要調試這個,你可以通過代碼並執行'var_dump($ _ SESSION); die;'或者使用類似[xdebug](http://xdebug.org/)的方式進行跟蹤。 – Znarkus

0

我有類似的情況,發現在我的平板電腦調用我在.ajax()調用的URL參數中指定的腳本之前,它實際上是再次調用index.php腳本。

和我的手機一樣。由於我在index.php中初始化了會話變量,因此他們不斷重新設置爲初始值(使其看起來好像沒有正確存儲在頁面之間)。

我從來沒有想過爲什麼index.php被重新調用,但我添加了if !isset()檢查初始化語句並清除它。

-1

在Android上,打開「Data Saver」有效地破壞了我的會話。我有一個登錄腳本,登錄成功後會重定向到上一頁。一直工作直到我打開Data Saver。關閉它使它再次工作。 Google確實聲明Data Saver可能會影響安全頁面,我猜想它包含我的腳本,該腳本不在HTTPS網站上。