问题:jQueryAjax中使用了PHP函数参数值
我对php函数arg value(在jQueryAjax中使用)有一个问题 JS代码:问题: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:
$(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检查。现在我用另一种方式检查了。看起来他没有找到那块代码。(有时很难说)。谢谢:)