使用onchange将PHP文件上传到Ajax

7
function chkFile(file1) {
    var file = file1.files[0];
    var formData = new FormData();
    formData.append('formData', file);

    $.ajax({
    type: "POST",
    url: "chkFileType.php",    
    contentType: false,
    processData: false,
    data: formData,
    success: function (data) {
      alert(data);
      }
  });
}


<form action="" method="post" name="myForm" id="myForm" enctype="multipart/form-data">

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

Upload Files
<input type="file" name="uploadFile" id="uploadFile" onChange="chkFile(this)"/>

<input type="submit" name="submitbutt" value="Checkout">

chkFileType.php

<?php 
    print_r($_FILE)
?>

我希望创建一个表单,当用户上传文件时,会在提交整个表单之前对上传的文件进行检查。我使用onChange来监测文件上传,然后将formData值传递给Ajax,以调用我的chkFileType.php进行检查,并将响应弹回警报。
该功能没有任何错误,但是alert(data)没有任何响应;
我知道我做错了什么,但不知道该往哪个方向去。我这样做对吗?

3
你能否添加 chkFileType.php 的内容? - Niranjan N Raju
你在弹出框中收到了空消息还是根本没有弹出框?如果你收到了空消息,那么 chkFileType.php 存在问题。 - Rakesh kumar
嗨,我已经添加了chkFileType.php文件的内容。但是我在成功函数中没有收到任何alert(data)提示。 - Ian Chua
2个回答

2

一切看起来都很好。你已经按照正确的方式进行了操作。但是要从ajax调用中获取任何响应,你必须在chkFileType.php中打印所需的内容。

例如:

if($ext =="jpg" || $ext == "png"){
     echo "Image"; // data in alert will alert as Image
} else if(check for txt file){
     echo "Text File"; //  data in alert will alert as Text File
} else if(chck for pdf) {
     echo "Pdf";// data in alert will alert as Pdf  
}

编辑 更改这个

var formData = new FormData( $("#formID")[0] );

希望您能理解我想表达的意思。

哎呀,我忘记展示我的chkFileType.php了。是的,我确实放置了echo代码。 - Ian Chua
我是说我已经添加了回显代码,但是alert(data)没有响应。 - Ian Chua
你在控制台中得到了什么响应? - Niranjan N Raju
如果我移除dataType: 'json',我可以从alert(data)中获得回复'ok',但无法获得$_File的信息。 - Ian Chua
我认为你需要更改这个代码:var formData = new FormData( $("#formID")[0] ); - Niranjan N Raju
显示剩余3条评论

0
我认为问题在于你写成了"type"而不是"method","POST"是一种方法而不是一种类型。

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Simas Joneliunas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接