0

xhr.upload.addEventListener( "error"、failed、false)は、私が持っているものとどのように異なります$success = move_uploaded_file($tmp_name, $name); if $(success) { echo "0" } else { echo "1" }か?これは不要な冗長性ですか?

function uploadPHP() {
    var xhr = new XMLHttpRequest();

    xhr.upload.addEventListener("progress", updateProgress, false);
    xhr.upload.addEventListener("load", complete, false);
    xhr.upload.addEventListener("error", failed, false);
    xhr.upload.addEventListener("abort", cancelled, false);

    var foo = document.getElementById("uploadScreen");
    var form = document.getElementById("uploadForm");
    var percentComplete;
    var index;

    xhr.onreadystatechange = function () {
        if (xhr.readyState == 1){
        }
--

    function cancelled() {
        //cancel
    }
}

localhost file_server#cat php / upload.php

<?php
//
//require_once('PhpConsole.php');
//PhpConsole::start();
$tmp_name = $_FILES['file1']['tmp_name'];
$path = "/trunk";
$name = $path . DIRECTORY_SEPARATOR . $_FILES['file1']['name'];
$success = move_uploaded_file($tmp_name, $name);
if ($success) {
echo "0";
} else {
    echo "1";
}
?>
4

1 に答える 1

2

"error"リクエストが通過しない場合、たとえばタイムアウトした場合に発生します。

いくつかのデータを検証する必要があるとします。無効な場合"error"、PHPでキャッチされない例外をスローしない限り、イベントは発生しません。代わりに、文字列など、値が無効であることを示すデータを返すだけ"0"です。

与えられた例では、が失敗する可能性は完全にありmove_uploaded_fileますが、技術的には要求が厄介な問題なしに完了したため、エラーハンドラーはトリガーされません。失敗した場合に実行したいアクションの唯一の兆候は、"0"応答です。

于 2012-11-18T18:59:11.643 に答える