2

我正在尝试制定一个方案,其中 Ajax 调用 upload.php 和 upload.php 将在消息中返回成功或失败。我尝试在 php 脚本中使用 echo "successs",希望 xhr.responseText 会收到该消息。但是 alert(xhr.responseText) 是一个空行。然后我突然想到,xhr.responseText 是否仅适用于 GET 而不适用于 POST?如果是这样,我怎样才能让它到 php 脚本可以返回自定义消息的位置?我不想使用 HTTP 状态代码...我宁愿学习如何在可能的情况下自定义消息。

请不要使用Jquery。

<?php
$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 "good";
} else {
    echo "bad";
}
?>
}

function uploadPHP() {
    var xhr = new XMLHttpRequest(),
       form = document.getElementById("uploadForm");

    xhr.open("POST", "php/upload.php", true);
    xhr.send(new FormData(form));
    alert(xhr.responseText);
}
4

1 回答 1

0

我会考虑使用以下内容:

    xhr.onreadystatechange = function() {
        if(xhr.status==200 && xhr.readyState == 4) {
            alert(xhr.responseText);
        }
    }

由于您正在上传文件,因此需要一些时间来生成响应。每次请求状态发生变化时都会运行此函数,并且只有在一切都完成后才会发出响应。

于 2012-11-06T04:17:32.187 回答