【问题标题】:jQuery and ajax to set session variable in PHPjQuery 和 ajax 在 PHP 中设置会话变量
【发布时间】:2015-04-07 22:02:47
【问题描述】:

我在 PHP 中使用会话变量来管理多语言站点中的当前语言。为了实现我想要的,我使用了一个标志图标,当单击它时(jQuery)它告诉 lang_json.php 将会话变量切换到新语言。

我在 jQuery 方面没有收到错误:

var sendData =  'en';  

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "lang_json.php",
    data: ({newLang: sendData}), 
    dataType: "json",
    success: function (msg) {
      alert('Success');
    },
    error: function (err){
      alert('Error');
    }
});

但是 PHP 文件没有设置会话变量:

lang_json.php:

<?php

// Session variables
session_name('aklogin'); // Starting the session
session_start();

if( isset($_POST['newLang']) ){
    $_SESSION['current_lan'] = $_POST['newLang'];
}else{
    $_SESSION['current_lan'] = "Not Posting";
}

?>

会话变量返回“Not Posting”。

【问题讨论】:

  • 你是如何测试的?
  • 您可以试试:data: ({"newLang": sendData}),用引号中的“newLang”吗?看起来它正在尝试使用那里不存在的变量。是不是在该行代码的 JavaScript 面板中抛出错误?
  • JavaScript 面板上没有错误。
  • 我正在通过 Chrome 开发者工具测试 jQuery。
  • 看起来 Json 内容类型被抛弃了。

标签: javascript php jquery ajax session


【解决方案1】:

您声称您正在向服务器发送 JSON,但是:

  • 你不是
  • PHP 未设置为接收 JSON

删除contentType: "application/json; charset=utf-8",,然后jQuery 将设置正确的内容类型,PHP 将填充$_POST

【讨论】:

    【解决方案2】:

    我一直在玩 jQuery 方面,这是有效的:

    var sendData =  'en'; 
    
    $.ajax({
        type: 'POST',
        url: 'app/pro/pro_lang_session_json.php',
        data: {'newLang': sendData}, 
        success: function (msg) {
            alert(sendData);
        },
        error: function (err){
            alert('Error');
        }
    });
    

    会话变量使用此代码设置为“en”。

    感谢您的帮助! @DelightedDOD

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-09
      • 2016-03-12
      • 2018-04-04
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 2013-10-25
      • 2014-01-23
      相关资源
      最近更新 更多