JavaScript:阅读$ _POST& AJAX提交后的$ _FILES变量

时间:2014-02-24 15:59:21

标签: javascript php ajax xmlhttprequest

我通过AJAX提交表单是为了显示预先选择的图像。从本地驱动器中选择图像将触发文件类型输入的“onchange”事件,然后调用AJAX例程。它运行正常,并且在成功的“move_uploaded_file”之后,PHP处理程序返回经过验证的文件名。以下说明了AJAX提交的实现方式:

var xhr = new XMLHttpRequest();
var xForm = new FormData(document.forms.namedItem("form"));
xhr.open("POST", "handler.php", true);
xhr.onreadystatechange = function(){
  if(xhr.readyState == 4 && xhr.status == 200){
    document.getElementById("imgDiv").src = xhr.responseText;
  }
} 
xhr.send(xForm);

没有让处理程序返回文件名,有没有办法在从AJAX提交返回后访问$ _POST和$ _FILES变量?使用以下方法从正常表格帖子返回时通常可以这样做:

<?php echo $_POST['stringInput'];?>
<?php echo $_FILES['imageInput']['fileName'];?>

但在这种情况下我无法得到任何东西。

感谢你,

索菲亚

编辑: 如果它可能相关,则处理程序不在同一个HTML脚本中,而是在单独的PHP文件中。再次感谢!

1 个答案:

答案 0 :(得分:0)

因为你在这里输入代码时出错: -

旧代码

x.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
        document.getElementById("imgDiv").src = xhr.responseText;
    }
}

新代码

xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
        document.getElementById("imgDiv").src = xhr.responseText;
    }
}

表示用xhr.onreadystatechange

替换x.onreadystatechange