我有一个向php网站发送帖子请求的函数。通过简单地改变变量的大写,我得到了2种不同的行为。有问题的变量是'action'变量,并且设置为“deleteIndexMain”或“deleteIndexmain”如果action变量设置为“deleteIndexmain”,我将获得显示php返回的html的弹出窗口。如果我将变量设置为“deleteIndexMain”,我没有弹出窗口。 (这意味着它似乎是一个javascript问题?
这是java脚本代码:
function deleteMe(v,r)
{
if(confirm("Are you sure"))
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if(xhttp.readyState == 4 && xhttp.status == 200)
{
alert(xhttp.responseText);
document.getElementById("indexmaintable").deleteRow(r);
}
};
xhttp.open("POST", "includes/control.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("action=deleteIndexMain&file="+v);
}
}
这是php代码:
<?php
//Todo make sure to authenticate!
session_start();
require_once("config.php");
function deleteIndexMain($file)
{
unlink($file);
$query = 'DELETE FROM indexmain WHERE linklocation="'.$file.'"';
$db->query($query);
}
print_r($_POST);
if(isset($_POST) && $_POST['action'] == "deleteIndexMain")
{
echo 'Deleting '.$_POST['file'];
deleteIndexMain($_POST['file']);
}
?>
答案 0 :(得分:1)
与==
的字符串比较区分大小写。如果要执行不区分大小写的比较,可以使用strcasecmp()
:
if(isset($_POST) && strcasecmp($_POST['action'], "deleteIndexMain") == 0)
请注意strcasecmp
没有返回布尔值,它返回一个数字,指示第一个字符串是小于,等于还是大于第二个字符串。因此,您必须使用== 0
来测试字符串是否相等。
或者,在正常比较之前,您可以使用strtolower()
将所有内容转换为单个案例。
if(isset($_POST) && strtolower($_POST['action']) == "deleteindexmain")