我在 PHP 脚本中有一个 switch case 语句,它根据 JS 文件中的 Ajax 调用提供的“日”和“小时”值返回一个字符串值。但是只要这些值为 0(即,星期日为日变量)和 0 作为小时变量的午夜)该语句不起作用并且该值返回空。我似乎找不到解决方案,这里是 PHP 函数和 Ajax 调用的代码的较短版本;
function getDayTimeData($day, $time){
$program = "";
switch($day){
case 0: //Sunday
switch($time){
case $time < 1:
$program = 'Be Our Guest';
break;
case $time < 6:
$program = 'Club Technoise';
break;
case $time < 12:
$program = 'Morning Juice';
break;
case $time < 21:
$program = 'Detox';
break;
case $time < 24:
$program = 'Disco Ball';
break;
}
break;
}
}
if(isset($_POST["DayData"]) && isset($_POST["TimeData"]))
{
echo(getDayTimeData($_POST["DayData"],$_POST["TimeData"]));
}
这是 Jquery Ajax 脚本
function getDayTimeAjax(_day,_time){
var def2 = $.Deferred();
setTimeout(function(){
if(xhr && xhr.readyState != 4){
xhr.abort();
}
var xhr = $.ajax({
type: 'post',
url: 'returnPoster.php',
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: {DayData: _day, TimeData: _time},
dataType: 'text',
success: function(x){
programInfo = x;
def2.resolve();
}
})
},2000);
return $.when(def2).done(function(){}).promise();
}
var d = new Date();
var programInfo = ".";
setInterval(function () { updateProgram() }, 3000);
function updateProgram(){
getDayTimeAjax(d.getDay(),d.getHours()).done(function(){
console.log(programInfo.trim());
})
}
编辑:抱歉,大家看起来我在这个主题上提供了一些错误信息,因为当我设置这个线程时我有点着急。该问题仅在 $time 值为 0 时发生。这些值看起来很好,直到发生“case $time <1:”操作。从那时起,即使 $time 变量的值为 0,它也不会执行第一种情况下的代码块,因此程序变量保持为空。所有其他值都返回 switch 语句中的值。
梵蒂冈之花
沧海一幻觉
慕田峪7331174
胡说叔叔