使用ajax发送数据表单文件

时间:2016-06-17 14:53:33

标签: javascript php ajax

我使用下面的代码用js发送图像文件的数据,但是当我添加

时效果很好
 var image = document.getElementById("img_book").files[0];
 var form = new FormData(); 
 form.append("image", image);

我收到附加错误。

这是我的代码

$("#publish").click(function() {
   var x = event.target.responseText;
   document.getElementById("book_id").setAttribute("value",x);
   var image = document.getElementById("img_book").files[0];
   var form = new FormData(); 
   form.append("image", image);

   var title = document.getElementById("title").value;
   var desc = document.getElementById("desc").value;
   var cat = document.getElementById("cat").value;
   var sub_cat = document.getElementById("sub_cat").value;
   var tags = document.getElementById("tags").value;
   var lang = document.getElementById("lang").value;
   var privacy = document.getElementById("privacy").value;
   var id = document.getElementById("book_id").value;
   //if((title !== "") && (desc !== "") && (cat !== "") && (sub_cat !== "") && (lang !== "") && (privacy !== "")) {
     $.ajax({
       url: "ajax/upload/publish.php",
       method  : "POST",
       data : {'form' : form ,'title' : title,'desc' : desc, 'cat' : cat , 'sub_cat' : sub_cat , 'tags' : tags , 'lang' : lang , 'privacy' : privacy , 'id' : id},
       cache: true,
       success : function(data) {
         if(data.status == 'success'){
          window.location.replace("http://localhost/book/book.php?id=" + id);
        }else if(data.status == 'error'){
          alert("Error on query!");
        }
      }
    });
   //}
 });

1 个答案:

答案 0 :(得分:1)

您必须将所有参数附加到formdata对象,或者更容易将包含数据的表单传递给from数据构造函数。

然后在请求中单独传递formdata对象,还必须将contentType和processData设置为false。