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
}
}
本地主机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";
}
?>
最佳答案
如果您的请求未通过(例如超时),则会出现"error"
。
假设您需要验证一些数据。如果无效,除非您在PHP中抛出未捕获的异常,否则"error"
事件将不会发生。相反,它将仅返回一些指示值无效的数据,例如字符串"0"
。
在给定的示例中,move_uploaded_file
完全有可能失败,但是错误处理程序将不会触发,因为从技术上讲,请求完成时不会发生意外事件。失败的唯一指示是"0"
响应。