Javascript 如果JS会话变量为null,如何避免500内部服务器错误
我创建这个脚本是为了从各种web源读取。此脚本将更新所有通知邮件、帖子、好友和他们自己的下拉窗口的详细信息,并同时更新两侧的更新栏。我在最上面的manu.php页面中使用了这个脚本 此脚本对于登录用户运行良好 现在我传递一个会话id变量,其中JavaScript变量uid=;因此,当用户未登录时,我的浏览器控制台会显示500 Internal Server Error(内部服务器错误),因为这里的会话没有ID,所以它会传递uid= 我如何克服这个问题 以下是我的JavaScript脚本:Javascript 如果JS会话变量为null,如何避免500内部服务器错误,javascript,php,jquery,long-polling,Javascript,Php,Jquery,Long Polling,我创建这个脚本是为了从各种web源读取。此脚本将更新所有通知邮件、帖子、好友和他们自己的下拉窗口的详细信息,并同时更新两侧的更新栏。我在最上面的manu.php页面中使用了这个脚本 此脚本对于登录用户运行良好 现在我传递一个会话id变量,其中JavaScript变量uid=;因此,当用户未登录时,我的浏览器控制台会显示500 Internal Server Error(内部服务器错误),因为这里的会话没有ID,所以它会传递uid= 我如何克服这个问题 以下是我的JavaScript脚本: var
var uid = '<? echo $session->id; ?>';
function addmailno(type, msg){
//Do something for display mail/friend/post notification
}
function addmailup(type, msg){
//Do something for display mail/post/friend drop-down.
}
function addside(type, msg){
//Do something for display all friend/new post in side bar.
}
function waitFormailno(){
$.ajax({
type: "GET",
url: "serverforupandside.php",
cache: false,
async : false,
dataType : 'json',
data: "uid="+ uid,
timeout:15000,
success: function(data){
addmailno("MyDivClass", data);
addmailup("MyDivClass", data);
addside("MyDivId", data);
setTimeout(waitFormailno, 15000);
},
error: function(){
setTimeout(waitFormailno, 15000);
}
});
}
$(document).ready(function(){
waitFormailno();
});
serverforupandside.php
<?php
include("db.php");
include_once("mysession.php");
while (true) {
if($_GET['uid']){
global $dbh;
//All php query is here one after one
//Output is here by data
$data = array();
$data['upmail'] = $upmail;
$data['upfollow'] = $upfollow;
$data['uppost'] = $uppost;
// etc all
if (!empty($data)) {
echo json_encode($data);
flush();
mysqli_close($dbh);
}
}
mysqli_close($dbh);
}
?>
您的Javascript代码应修改为:
function waitFormailno(){
$.ajax({
type: "GET",
url: "serverforupandside.php",
cache: false,
async : false,
dataType : 'json',
data: "uid="+ uid,
timeout:15000,
success: function(data){
addmailno("MyDivClass", data);
addmailup("MyDivClass", data);
addside("MyDivId", data);
}
});
}
$(document).ready(function(){
setInterval(waitFormailno, 15000); // calls a function or evaluates an expression at specified intervals (in milliseconds)
});
PHP代码:
另外,您应该在填充$data数组之前添加验证。if$\u GET['uid']{是否出现错误?请尝试将此更改为if!empty$\u GET['uid']{另外,您在代码中进一步使用$\u GET['uid']的位置在哪里?我知道此方法仅用于在php中获取传递变量。没有$\u GET['uid']如何更好,先生?我不清楚没有$\u GET的您的陈述…您是否能够确定导致500错误的原因?为什么使用无限循环?虽然为真?我试图使我的脚本像长轮询一样。因此在为真时使用。在chrome浏览器控制台中,如果会话未登录,错误显示500错误。
<?php
include("db.php");
include_once("mysession.php");
if (!empty($_GET['uid'])) {
global $dbh;
//All php query is here one after one
//Output is here by data
$data = array();
$data['upmail'] = $upmail;
$data['upfollow'] = $upfollow;
$data['uppost'] = $uppost;
// etc all
if (!empty($data)) {
echo json_encode($data);
}
}