【问题标题】:Drag and Drop event.dataTransfer.files is empty拖放 event.dataTransfer.files 为空
【发布时间】:2016-08-06 17:58:04
【问题描述】:

每次将图像放入 div 时,我都会尝试收集数据。我的服务器甚至没有收到任何空数据。我只需要显示图像名称“green-glass-arrow.png”。您可以在“控制台”中看到它 我究竟做错了什么?请帮忙! You can see example here

JavaScript

function allowDrop(ev) {
ev.preventDefault();
}

function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
console.log(event.dataTransfer.files);
}

最终结果。使用 JavaScrip AJAX 将图像数据拖放到 MySql 到 PHP

编辑代码

<script>

function allowDrop(ev) {
    ev.preventDefault();
}

function drag(ev) {
    ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    ev.target.appendChild(document.getElementById(data));
    var ele = document.getElementById(data);    
    console.log(document.getElementById(data).name); 
    ajax_post(ele);
}

// ----AJAX Post to PHP----->
function ajax_post(ele){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "insert.php";
    var imgName = ele.name;
    var imgId = ele.id;

    var vars = "imgName="+imgName+"&imgId="+imgId;

    hr.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
            if(hr.readyState == 4 && hr.status == 200) {
                    var return_data = hr.responseText;
                        document.getElementById("status").innerHTML = return_data;
            }
    }
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request
    document.getElementById("status").innerHTML = "processing...";
}    

</script>

PHP 代码“插入.php”

<?php
    $con = mysqli_connect('localhost','root','your_password');

    if(!$con) {
        echo 'Not Connected To Server';
    }

    if(!mysqli_select_db($con, 'your_table')) {
        echo 'Database Not Selected';
    }

    $imgName = $_POST['imgName'];
    $imgId = $_POST['imgId'];

    $sql = "INSERT INTO schema_name (name,id) 
    VALUES ('$imgName','$imgId')";

    if(!mysqli_query($con,$sql)) {
        echo 'Not Inserted';
    }
    else {
        echo 'Inserted';
    }
?>

【问题讨论】:

  • 在示例中,我将 html 更改为 animations.fg-a.com/arrows/green-glass-arrow.png" draggable="true" ondragstart="drag(event)" id="credit5" class="player" name= "green-glass-arrow.png" > 在 Js 中我改为 console.log(document.getElementById(data).name);获取图像名称。这就是你想要的吗?
  • 你能给我发个例子吗,我认为它可能有用...
  • 是的,这正是我需要的,你为什么不把它作为答案发布,这样我就可以给你一个信用:)

标签: javascript html mysql css


【解决方案1】:

codepen.io/TShah/pen/aNYMaX

        <script>

    function allowDrop(ev) {
        ev.preventDefault();
    }

    function drag(ev) {
        ev.dataTransfer.setData("text", ev.target.id);
    }

    function drop(ev) {
        ev.preventDefault();
        var data = ev.dataTransfer.getData("text");
        ev.target.appendChild(document.getElementById(data));
        var ele = document.getElementById(data);    
        console.log(document.getElementById(data).name); 
        ajax_post(ele);
    }

    // ----AJAX Post to PHP----->
    function ajax_post(ele){
        // Create our XMLHttpRequest object
        var hr = new XMLHttpRequest();
        // Create some variables we need to send to our PHP file
        var url = "insert.php";
        var imgName = ele.name;
        var imgId = ele.id;

        var vars = "imgName="+imgName+"&imgId="+imgId;

        hr.open("POST", url, true);
        // Set content type header information for sending url encoded variables in the request
        hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        // Access the onreadystatechange event for the XMLHttpRequest object
        hr.onreadystatechange = function() {
                if(hr.readyState == 4 && hr.status == 200) {
                        var return_data = hr.responseText;
                            document.getElementById("status").innerHTML = return_data;
                }
        }
        // Send the data to PHP now... and wait for response to update the status div
        hr.send(vars); // Actually execute the request
        document.getElementById("status").innerHTML = "processing...";
    }    

    </script>

希望这会有所帮助...

【讨论】:

  • 你能帮我把 AJAX 发布到 PHP 上吗?插入相同的数据。我在codepen中更新了JS。非常感谢...
  • 刚刚有机会查看您发送给我的代码。现在很清楚我缺少什么,并在 MySql 中给出了完美的结果。谢谢你的时间!!!
猜你喜欢
  • 2012-07-19
  • 2015-04-13
  • 2020-08-30
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 2016-09-25
相关资源
最近更新 更多