如何在函数中使用ajax来调用php函数拖放javascript

时间:2017-03-05 09:19:53

标签: javascript php ajax

我必须做一个可以处理文件系统的项目(上传文件,下载,删除,重命名,在文件夹中移动文件等等)。 所以我做了一个拖放操作在javascript的其他目录中移动文件,但我想在每次传输,调用PHP函数更新我的数据库中的文件夹等...我该怎么办?这是我的拖放代码:

window.onload = function () {
function drag_and_drop() {
    for (var items = document.querySelectorAll('[data-draggable="item"]'), len = items.length, i = 0; i < len; i++) {
        items[i].setAttribute('draggable', 'true');
    }

    /* DRAG N DROP */
    var item = null;

    document.addEventListener('dragstart', function (e) {
        item = e.target;
        e.dataTransfer.setData('text', '');

    }, false);
    document.addEventListener('dragover', function (e) {
        if (item) {
            e.preventDefault();
        }

    }, false);

    document.addEventListener('drop', function (e) {
        if (e.target.getAttribute('data-draggable') == 'target') {
            e.target.appendChild(item);
            e.preventDefault();
           /*call a php function here*/ 


        }

    }, false);

    document.addEventListener('dragend', function (e) {
        item = null;

    }, false);

}

drag_and_drop();

}

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery Ajax方法调用php文件并通过POST为其提供参数。

移动文件的示例如下所示:

$.ajax({   
  type: "POST",   
  url: "/destination/to/php/file.php",   
  data: "sourceFile=" + sourcefile + "&destinationFile=" + destinationFile, 
  success: function(data) {
    // Request succeded, data is the string containing the result returned by the php file. This could be an error message or something else. You can also use JSON to have multiple values.
    // Decode json
    decodedData = JSON.decode(JSON.parse(data));
    if (decodedData == "success") {
      console.log("Moved file");
    } else {
      console.log("Error while moving file: " + decodedData);
    }
  },
  fail: function() {
    console.log("Request failed");
  }
});

然后在您的PHP文件中,您只需阅读帖子值,执行操作并返回消息。我建议用JSON解码/编码消息。

<?php
  $destinationFile = $_POST["sourceFile"];
  $sourceFile = $_POST["destinationFile"];
  // Change files in the Database

  if ($suceeded) {
    die(json_encode("succeded"));
  } else {
    die(json_encode($errormessage));
  }

如果你想在一个文件中有多个PHP函数,只需添加一个新的参数actionName或functionName或者其他东西,然后用一个“switch”检查php文件,你应该执行哪个动作/函数。