【问题标题】:Saving 3 php variables from javascript从 javascript 中保存 3 个 php 变量
【发布时间】:2018-05-25 10:24:59
【问题描述】:
<?php 


include ('config.php');


?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Platser</title>

<link rel="stylesheet" href="style.css" type="text/css"/>

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="js/jquery.json-2.2.min.js"></script>

</head>

<body>

<div id="glassbox">

<?php 

    if(isset($_POST['Spara'])){

    }

    $antal = $mysqli->query("SELECT `Grupp ID` FROM `Elevgrupper` WHERE `Grupp ID`=25");
    $num = $antal->num_rows;

    $res = $mysqli->query("SELECT `Namn`, `Efternamn` FROM `Elever` WHERE `ID` IN (SELECT `Användar ID` FROM `Elevgrupper` WHERE `Grupp ID` = 25)");

    for ($i = 1; $i<=$num; $i++){
        $get_coords = mysqli_query($mysqli, "SELECT * FROM coords WHERE id = '" . $i . "'");
        $row = $get_coords->fetch_assoc();
        $ok = $res->data_seek($i-1);
        $row1 = $res->fetch_assoc();

        //
        $x = $row['x_pos'];
        $y = $row['y_pos']; 
        echo '<div id="e'. $i .'" class="e" style="left:'.$x.'px; top:'.$y.'px;"><p id="p' . $i .'">'. $row1["Namn"] . " " . $row1["Efternamn"] . '</p></div>';
        }

?>
</div>
<form action="<?echo $_SERVER['PHP_SELF'];?>">
    <input onclick="spara();" type="submit" name="Spara">
</form>

<div id="respond"></div>



</body>
<script type="text/javascript">
    $(document).ready(function() {

        var antal = document.getElementsByClassName("e");
        for (var i = 1; i <= antal.length; i++) {
                $("#e" + i).draggable({ 
                containment: '#glassbox', 
                scroll: false
                });
            }
        });

    function spara(){
        var antal = document.getElementsByClassName("e");
        for (var i = 1; i <= antal.length; i++) {
            var coords=[];
            var coord = $("#p" + i).position();
            var item={ coordTop:  coord.left, coordLeft: coord.top  };
            coords.push(item);
            var order = { coords: coords };
            $.post('updatecoords.php', 'data='+$.toJSON(order), function(response){    
        });
    }
}


</script>

</html>



<?php
if(!$_POST["data"]){
    echo "Nothing Sent";
    exit;
}

include ('config.php');

$data = json_decode($_POST["data"]);

foreach($data->coords as $item) {
    //Extract X number for panel
    $coord_X = preg_replace('/[^\d\s]/', '', $item->coordTop);
    //Extract Y number for panel
    $coord_Y = preg_replace('/[^\d\s]/', '', $item->coordLeft);
    //escape just-in case
    $x_coord = mysqli_real_escape_string($mysqli, $coord_X);
    $y_coord = mysqli_real_escape_string($mysqli, $coord_Y);

    //Setup Query
    $sql = "UPDATE coords SET x_pos = '" . $x_coord . "' WHERE id"= . substr($data->id, -1) .;
    mysqli_query($mysqli, $sql);

    $sql = "UPDATE coords SET y_pos = "'. $y_coord .'"  WHERE id"= . substr($data->id, -1) .;
    mysqli_query($mysqli, $sql);

}

//Return Success
echo "success";



?>

如果我没记错的话,除了 spara 函数之外的所有东西都应该工作,它让我发疯,因为我什至没有收到任何错误消息,似乎它在整个脚本中运行时没有错误,也没有保存任何东西。

我正在尝试做的是一个教师工具,它从包含所有学生的数据库中放置长椅,您可以拖动这些长椅并移动到您选择的位置,这样您就可以为每个人决定座位,而无需做很多工作,因为老师。我希望通过按下运行该功能的按钮来保存布局。

【问题讨论】:

  • 请提供 1) 您订单的 console.log 2) 正在发送的请求的屏幕截图(开发工具 -> 网络 -> 选择传出请求 (xhr) -> 查询字符串参数(在 Chrome 中))

标签: javascript php mysqli


【解决方案1】:

我认为这行可能是错误的:

$.post('updatecoords.php', 'data='+$.toJSON(order), function(response)

通常我会有这样的东西:

$.post('updatecoords.php', {data: somevar}, function(response)

试一试,将$.toJSON(order) 分配给一个变量并按照建议传递它。

更新: 根据下面 Domeniks 的反馈,您可能只需要这样做:

$.post('/updatecoords.php', somevar, function(response)

【讨论】:

  • 你需要在没有数据的情况下发送{$.toJSON(order)},因为你已经使用了键值对
  • 好的,现在。你确定你不是说/updaterecords.php?它在同一个域上吧?但是你应该放一个绝对路径
  • @delboy1978uk 是的,我确定他们在同一个域上,代码以前可以工作,但现在我需要多个框并保存在一个按钮上,而不是在移动它们时以不同的方式完成
  • @helmjävel 请提供console.log$.toJSON(order)。这可能会解决问题。
  • @helmjävel 您发送的是var order = { coords: coords };,因此您需要将其更改为var order = { data: coords };,或者只需将ajax 更改为data: coords 并删除var order
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 2023-04-06
  • 2015-06-04
  • 2020-07-21
  • 2013-11-15
  • 2021-06-22
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多