Ajax表单数据未向php发送任何内容

时间:2018-08-04 19:11:46

标签: javascript php jquery html ajax

因此,当我选择使用ajax上传图片时,我正在尝试将图片数据发送到php。

我尝试将数据发送到不带ajax的php,它似乎可以正常工作,并且我能够对文件数据进行处理。但是,因为我不希望PHP重新加载到其他页面,所以我想使用Ajax。

所以我得出的结论是ajax调用或formdata出了问题。

我不知道为什么它不起作用。

任何建议

jQuery:

$( document ).on('click','#upload_img_btn', function(){
  $('#choose_img').click();

  form_data = new FormData();
  $("#choose_img").change(function(){
    var selected_img = this.files[0];
    form_data.append("#choose_img", selected_img);
    $.ajax({
        url: $("#img_uploader").attr("action"),
        type: 'POST',
        data: form_data,
        processData: false,
        contentType: false,
        success: function(validation){
          if (validation == "success") {
             readURL(this);
          } else {
            alert(validation);
          }
        }
    });
  });

});

function readURL(input) {
       if (input.files && input.files[0]) {
           var reader = new FileReader();

           reader.onload = function (e) {
             var img_preview = '<img id="preview" src="'+ e.target.result +'" />' +
             '<input class="btn" type="submit" value="Post" name="submit" id="post_img">'
             $('.rounded_box').replaceWith(img_preview);
           }

           reader.readAsDataURL(input.files[0]);
       }
   }

PHP

<?php


echo  $_FILES['choose_img']['name'];


?>

1 个答案:

答案 0 :(得分:0)

在您的JS中,您实际上从未真正将文件发送到服务器并获得输出。您正在执行客户端上的所有逻辑,而从未执行验证。

如果要在提交表单之前验证文件 ,则有两个选择:

  1. 服务器端:您需要对图像进行ajax请求,并从服务器获取输出并显示(可能使用alert

  2. 客户端:您可以在JS代码中检查文件是否为图片