2017-03-05 9 views
1

ファイルシステム(ファイルのアップロード、ダウンロード、削除、名前の変更、フォルダ内のファイルの移動など)を処理できるプロジェクトを実行する必要があります。 )。 私はjavascriptの他のディレクトリにファイルを移動するためのドラッグ&ドロップを行いましたが、私は各転送で、私のデータベースなどのフォルダを更新するためのPHP関数を呼び出す必要があります...どうすればいいですか?ここに私のドラッグアンドドロップコード:関数のコールphp関数のためのajaxの使い方javascript

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(); 

}

+0

すべてのドロップで、AJAXコールをトリガーして、ファイル名、ドロップ先の場所など、いくつか送信することができます。この呼び出しは、これらの情報を取得できるPHPエンドポイントにヒットします。 PHPでデータベースを更新してください。 –

答えて

0

あなたはPHPファイルを呼び出し、それがPOSTを経由してパラメータ与えるjQueryのAjaxのメソッドを使用することができます。ファイルを移動するための

の例では、次のようになります。

$.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)); 
    } 

あなただけの新しいパラメータactionNameのかfunctionNameをか何かを追加し、実行すべきアクション/機能「スイッチ」でPHPファイルをチェックイン、一つのファイルに複数のPHPの機能を持つようにしたい場合。

+0

私はPHPで私の2つの変数を持ってsuccededしかし、なぜ私はconsole.logを行う、私は私の2つの変数と私のすべてのHTMLを持っている? : –

+0

これはデバッグを目的としたものです。アクションが正常に実行されたら、UIを更新するだけです。それが失敗すると私はエラーアラートのようなものを表示します。したがって、console.logをあなたのニーズに合ったものに置き換えることができます。 – Larce

+0

ご協力いただきありがとうございます!できます :) –