使用Ajax和其他类型的输入发送文件

詹姆士沃特·洛佩兹

我已经有一个使用ajax将数据保存到数据库的表单。所以我有这个样品

HTML代码

<input id="product_name" type="text" >
<input id="product_description"/>
<input id="product_img" type="file" accept="image/*"/>
<button id="btnSave">Save</button>

Javascrip代码

$("#btnSave").click(function(){
    p_name = $("#product_name").val();
    p_des = $("#product_description").val();
    p_image = $("#product_img").prop('files')[0];
    data = {
       'product_name':p_name,
       'product_description':p_des
    }

   $.post('url_here',data,function(response){
       console.log(response);
   });
});

我确实有与此等价的Jquery input.files信息,但我无法通过php。$ _ FILE传递它。请给我一些示例代码,将输入类型的文本和文件结合起来,而无需使用form标记和jquery ajax。

喇叭

您可以使用FormData

document.getElementById('btnSave').addEventListener('click', function() {
  var fd = new FormData();
  fd.append('product_name', document.getElementById('product_name').value);
  fd.append('product_description', document.getElementById('product_description').value);
  fd.append('product_name', document.getElementById('product_img').files[0]);

  var xhr = new XMLHttpRequest();
  xhr.open('POST', 'url_here');

  xhr.addEventListener('load', function(e) {
    console.log(xhr.responseText);
  });

  xhr.send(fd);
});

更新

由于您要使用jQuery AJAX(我不知道为什么,因为它不准备使用XHR2),因此可以通过告诉它不处理data参数来解决该问题,例如:

$('#btnSave').click(function() {
  p_name = $('#product_name').val();
  p_des = $('#product_description').val();
  p_image = $('#product_img').prop('files')[0];

  var data = new FormData();
  data.append('product_name', p_name);
  data.append('product_description', p_des);
  data.appned('product_img', p_image);


  $.ajax({
    url: 'url_here',
    data: data,
    processData: false,
    contentType: false,
    type: 'POST',
    success: function(response){
      console.log(response);
    }
  });
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ajax-通过ajax将输入文件和其他变量发送到php文件

聚合物使用核心Ajax同时发送文件和其他数据

如何限制用户不要使用带有React和TypeScript的输入类型文件来选择其他文件类型?

使用AJAX / XHR缓存zip文件(和其他文件)?

如何在PHP中发布文件和其他类型的输入?

使用AJAX从PHP检索数据以发送到其他PHP文件

Symfony2:使用ajax发送表单和其他变量

如何使用Knockout.js绑定HTML5 datepicker和其他输入类型?

Ajax从其他php文件联系表发送数据

从ajax发送formData和其他对象到PHP

如何使用改造2一起发送文件和其他参数

使用 AJAX 和 PHP 上传图像和其他信息 - 无法识别文件名

在 php 中使用文件和其他输入处理已发布的 formData 对象

使用jQuery和Ajax跟踪点击。我无权访问任何html /其他文件

使用ajax和php发送文件

在codeigniter中上传pdf,csv和其他文件类型

使用ftp将文件发送到其他目录

输入类型=“ file”与其他输入类型一起使用时显示奇怪的行为

输入类型文件-Ajax上传和php脚本

使用ajax发送输入文件数据

如何使用 Ajax 发送输入文本和 FileUploud 数据

使用字节,短型和其他原始类型

使用AJAX从其他远程服务器获取文件?

如何使用json Ajax将文件和一些输入字符串发送到Codebehind中的webmethod?

如何让输入识别其他类型的变量?

Node.js Express如何以javascript或其他文件类型发送响应

如何使用javascript中的所有其他输入类型计算单选输入值?

使用标准输入和标准输出使用 shell_exec 或 exec 其他任何东西从命令行运行 python 文件并传递输入

合并上传文件并在ajax请求中发送其他字段值