问题:jQueryAjax中使用了PHP函数参数值

问题:jQueryAjax中使用了PHP函数参数值,php,jquery,ajax,Php,Jquery,Ajax,我对php函数arg value(在jQueryAjax中使用)有一个问题 JS代码: $(document).ready(function() { $('#general-settings').submit(function(e) { $.ajax({ type: 'POST', url: 'settings.php', data: { check: 1, ..., }, success:

我对php函数arg value(在jQueryAjax中使用)有一个问题

JS代码:

$(document).ready(function() {
  $('#general-settings').submit(function(e) {
    $.ajax({
      type: 'POST',
      url: 'settings.php',
      data: {
        check: 1,
        ...,
      },
      success: function(response) {
        console.log(response);
        if(response == 'redirect') {
          window.location.href='login.php';
        }
      }
    });
    e.preventDefault();
  })
});
Php函数代码:

  function isLogged($js_redirect) {
    if(isset($_SESSION['isLogged']) == false) {
      if($js_redirect === true) {
        exit('redirect');
      }
      if($js_redirect === false) {
        exit(header('Location: login.php'));
      }
    }
  }
我在以下情况下使用此功能:

  isLogged(false); // check when you access the page if you are logged in

  // when the submit button is pressed, the following code is executed:
  if(isset($_POST['check'])) {
    isLogged(true); // check when sending, if you are logged in. (here false is executed instead of true.)

    /* ...irrelevant code... */

  }
问题是当您再次检查是否已登录时。函数是用参数(false)而不是(true)执行的,我不明白为什么

  • isLogged(false)位于脚本的开头,并检查用户
  • isLogged(true)检查您是否在保存某些文件时登录 设置。但我不明白为什么它需要 执行第一个函数时的参数。(错误而不是 是的……)

由于您编辑代码的方式,很难确定,但看起来只有第一个
isLogged(false)
被调用,因为在
isLogged
函数中退出
。所以这一点:

if(设置($\u POST['check'])){
isLogged(true);//如果您已登录,请在发送时检查。(此处执行false而不是true。)
/*…无关代码*/
}
永远不会被处决

大概是这样的:

//按下提交按钮时,执行以下代码:
如果(isset($_POST['check'])){
isLogged(true);//如果您已登录,请在发送时检查。(此处执行false而不是true。)
/*…无关代码*/
}否则{
isLogged(false);//如果您已登录,请在访问页面时检查
}

可能就是你要找的

如果($js_redirect===true){
两个检查都有什么原因?@NigelRen第一个语句是真的第二个语句是假的。你怎么知道
$js_redirect
在应该是真的地方是假的?请解释你的错误。@Michel我在代码中添加了几个解释。(对于这个问题)我可以看到执行了什么,并理解为什么。我要问的是:您如何知道它是用错误的值执行的。您是否将
$js_redirect
输出到某个地方以检查它的值。因为
isloged()
总是以给定的值执行。因此,我怀疑函数中的逻辑有缺陷,或者发生了您现在没有显示的其他事情,从而触发了错误的操作。isLogged(false);是脚本中的第一行,并且执行正确。if(isset($\u POST['check']))在与jquery+ajax交互时执行。@andrei_bancos这些文件是在单独的文件中吗?那么您至少应该将它们分成不同的代码块。否则,
isLogged
函数中的
exit
语句将终止脚本(整个脚本不仅仅是函数调用)而且你永远也不会得到isset检查。现在我用另一种方式检查了。看起来他没有找到那块代码。(有时很难说)。谢谢:)