Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX调用不会更新数据库_Javascript_Ajax - Fatal编程技术网

Javascript AJAX调用不会更新数据库

Javascript AJAX调用不会更新数据库,javascript,ajax,Javascript,Ajax,我正在创建一个系统,在其中的一部分,你必须能够将员工从周六的轮班中调离。为此,单击一个图标,该图标调用JavaScript函数“removeEmpFromSaturday”,并提交相应的参数 在该脚本中,它应该通过Ajax请求更新值,该请求应该更新我的数据库,并将该员工从他/她的周六班次中删除 然而,我所指的PHP页面实际上从未被调用/请求(“由PHP页面上的警报证明”) 我对AJAX比较陌生,也许我的语法对于这个函数来说是完全错误的,所以任何额外的指针都将非常感谢 作为参考,当我提醒任何值“i

我正在创建一个系统,在其中的一部分,你必须能够将员工从周六的轮班中调离。为此,单击一个图标,该图标调用JavaScript函数“removeEmpFromSaturday”,并提交相应的参数

在该脚本中,它应该通过Ajax请求更新值,该请求应该更新我的数据库,并将该员工从他/她的周六班次中删除


然而,我所指的PHP页面实际上从未被调用/请求(“由PHP页面上的警报证明”)

我对AJAX比较陌生,也许我的语法对于这个函数来说是完全错误的,所以任何额外的指针都将非常感谢

作为参考,当我提醒任何值“id、loc、week、year”时,它们都会给出我期望的正确值,因此这不是问题

以下是我认为问题所在的代码:

<script>

function removeEmpFromSaturday(id, loc, week, year){

    xhttp = new XMLHttpRequest();
    xhttp.open("GET", "includes/ajax/remove_emp_from_saturday.php?e_id=" + id + 
                      "&location=" + loc + "&week=" + week + "&year=" + year, false);
    xhttp.send();
    resetPlanner();
}

</script>

从星期六(id、loc、周、年)起移除功能{
xhttp=newXMLHttpRequest();
xhttp.open(“GET”、“includes/ajax/remove_emp_from_saturday.php?e_id=“+id+
“&location=“+loc+”&week=“+week+”&year=“+year,false”);
xhttp.send();
重置计划器();
}
我所指的PHP代码也是:

<?php require_once dirname(__FILE__)."/../admin_header.php" ;?>

<script>alert("STARTED");</script>

<?php

if(isset($_REQUEST['e_id'])){
    $emp_id = escape($_REQUEST['e_id']);
    $loc = escape($_REQUEST['location']);
    $week = escape($_REQUEST['week']);
    $year = escape($_REQUEST['year']);

    $query = "SELECT e_hp_daily_pat FROM employees WHERE e_id = '{$emp_id}' ";
    $get_hp_daily_pat_query = mysqli_query($connection, $query);
    $row = mysqli_fetch_assoc($get_hp_daily_pat_query);
    $e_hp_daily_pat = escape($row['e_hp_daily_pat']);

    $query = "SELECT * FROM slots WHERE s_location = '{$loc}' AND s_day = '6' 
        AND s_week = '{$week}' AND s_year = '{$year}' ";
    $get_emps_query = mysqli_query($connection, $query);
    $row = mysqli_fetch_assoc($get_emps_query);
    $s_real_sub = escape($row['s_real_sub']);
    $s_emps = escape($row['s_emps']);
    $s_emps = explode(";", $s_emps);
    $process = false;
    $e_match = 0;
    foreach($s_emps as $emp){
        if($emp == $emp_id){
            unset($s_emps[$e_match]);
            $process = true;
          }
        $e_match++;
    }

    if($process == true){
        $s_emps = implode(";", $s_emps);
        $s_real_sub -= $e_hp_daily_pat;
        $query = "UPDATE slots SET s_emps = '{$s_emps}', s_real_sub = '{$s_real_sub}' WHERE s_location = '{$loc}' AND s_day = '6' AND s_week = '{$week} AND s_year = '{$year}' ";
        $set_emps_query = mysqli_query($connection, $query);
      }
    }
?>

<script>alert("COMPLETE");</script>

警报(“启动”);

您的更新查询中有一个错误:

   $query = "UPDATE slots SET s_emps = '{$s_emps}', s_real_sub = '{$s_real_sub}' WHERE s_location = '{$loc}' AND s_day = '6' AND s_week = '{$week} AND s_year = '{$year}' ";
您在
s_周后缺少一个“'”

   $query = "UPDATE slots SET s_emps = '{$s_emps}', s_real_sub = '{$s_real_sub}' WHERE s_location = '{$loc}' AND s_day = '6' AND s_week = '{$week}' AND s_year = '{$year}' ";
一般建议:要调试php代码,请尝试不要使用
alert(“”
),而是直接使用php内部的
echo
调用


这将确保找到并解析php。

“由php页面上的警报证明”——这不是证据。您没有将PHP脚本的输出作为新网页加载到浏览器中。您没有对PHP脚本的输出执行任何操作。除了@Quentin所说的:您检查了您的路径了吗?你确定文件在你说的地方吗?:)调试您遇到问题的地方是,您的服务器调用是否正确执行了put echo语句以进行调试。@Quentin这并不是一个真正有用的注释。我试图通过Ajax调用一个PHP页面来更改数据库中的值。我在我的PHP页面上有一个警报,我显然正在尝试调用它,但它并没有向我表明我在调用中遇到了问题。你明白我在这里发布求救信息吗?@Jordumus我确实检查了路径,它在正确的位置。不仅如此,我还以类似的方式打了另一个电话,路径(相同的文件夹等)也很相似,这个电话没有问题。你完全正确。很好的发现。我以后会接受这个建议,只使用您引用的确切语言进行调试。谢谢我建议使用POST请求(或删除)而不是GET。GET的语义是请求对服务器的状态没有任何副作用。因此,后续GET请求可能会被缓存。删除查询有一个明显的副作用,您不希望它被缓存。