FormData对象的作用就类似于这里的serialize()方法,不过FormData是浏览器原生的,且支持二进制文件

1.这里实现一个无刷新上传图片,成功后页面显示

点击button 触发隐藏的 input上传

view层

  1. <img id='headimage' src="data:images/default_tx.jpeg" width="80" height="80" style="border-radius: 5px;" />
  2. <div style="width: 100%; height: auto; text-align: center; margin-top: 10px;">
  3. <span style="font-family:Arial;"> </span>
  4.  
  5. <input type="button" class="btn btn-default btn-sm" value="上传头像" onclick="getElementById('inputfile').click()" />
  6. <form id="submit_form11">
  7. <input type="file" name="image" style="display:none;" id="inputfile"/></div>
  8. </form>

JS

  formData里面存储的数据形式,一对key/value组成一条数据,key是唯一的,一个key可能对应多个value。如果是使用表单初始化,每一个表单字段对应一条数据,它们的HTML name属性即为key值,它们value属性对应value值。

  1. //1.可以通过form表单获取
  2. var form = $("#submit_form11")[0];
  3. var form = document.getElementById("submit_form11");
  4. //两种写法相同,获取表单对象节点
  5. var data = new FormData(form);
  6. //表单来初始化
  7.  
  8. //2.可以直接获取对象存入formdata
  9. var data = new FormData();
  10. //$.each($('#inputfile')[0].files, function(i, file) {
  11. //data.append('image', file);
  12. //});
  13. data.append("image" , $("#inputfile")[0].files[0]);
  14. //这种方法就不用使用form标签了
  15.  
  16. // var image = formData.get("image");
  17. //formdata提供get方法可以获取存入的值
  18. data.append('cid',<?php echo $info['cid']; ?>)
  19. // 当然也可以在此基础上,添加其他数据
  20.  
  21. //上传
  22. $.ajax({
  23. url:"index.php?r=cus-main/upimage",
  24. type:'POST',
  25. data:data,
  26. cache: false,
  27. contentType: false, // 不处理发送的数据,因为data值是Formdata对象,必须false才会自动加上正确的Content-Type
  28. processData: false, // 必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
  29. success:function(data){
  30. if(data['code']==101)
  31. {
  32. $('#headimage').attr('src',data['url']);
  33. $('#tips').css('display','none');
  34. }else
  35. {
  36. alert('图片上传失败');
  37. }
  38.  
  39. },
  40. error:function(){
  41. alert('图片上传失败');)
  42. }
  43. });

  

  后台处理

  1. 获取文件图片 使用 $_FILES['image'] 获取一般键值 使用$_POST['cid']

  

Ajax 使用formdata 实现 无刷新表单上传的更多相关文章

  1. ajax+FormData+javascript实现无刷新表单信息提交

    ajax+FormData+javascript实现无刷新表单信息提交 原理: dom收集表单信息,利用FormData快速收集表单信息  ,实例化表单数据对象 同时收集fm的表单域信息. var f ...

  2. ajax+FormData+javascript 实现无刷新表单注册

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. DWZ框架Ajax无刷新表单提交处理流程

    DWZ框架Ajax无刷新表单提交处理流程是: 1.       ajax表单提交给服务器 2.       服务器返回一个固定格式json结构 3.       js会调函数根据这个json数据做相应 ...

  4. ajax方式提交带文件上传的表单,上传后不跳转

    ajax方式提交带文件上传的表单 一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦.基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数 ...

  5. 文件的上传(表单上传和ajax文件异步上传)

    项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...

  6. 普通文件的上传(表单上传和ajax文件异步上传)

    一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...

  7. 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType

    回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...

  8. 文件的上传(1)(表单上传和ajax文件异步上传)

    文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...

  9. django 基于form表单上传文件和基于ajax上传文件

    一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...

随机推荐

  1. hive Illegal Operation state transition from CLOSED to ERROR的处理

    异常堆栈如下: 2015-11-24 16:49:11,495 ERROR org.apache.hive.service.cli.operation.Operation: Error running ...

  2. MAVEN 编译打包测试 指定本地jar

    转载自:http://penuel.iteye.com/blog/1766102 maven对于互联网开发,进行版本管理有着不可或缺的作用;  而经常开发的程序猿直接联调或者依赖未上线或deploy的 ...

  3. es6+最佳入门实践(11)

    11.async函数 async 函数是什么?一句话,它就是 Generator 函数的语法糖.通俗的说就是Generator函数的另一种写法,这种写法更简洁,除此之外,async函数还对Genrat ...

  4. oracle 包和包实现

    包: create or replace package sp_pexam_clear as --定义结构体 /*type re_stu is record( rname student.name%t ...

  5. 转:A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)

    demo 参见 MDP DEMO   本文是对 http://mnemstudio.org/path-finding-q-learning-tutorial.htm 的翻译,共分两部分,第一部分为中文 ...

  6. HDU 1877 又一版 A+B(进制转换)

    看了http://lovnet.iteye.com/blog/1690276的答案 好巧妙的方法 递归实现十进制向m进制转换 #include "stdio.h" int m; v ...

  7. 【LA3487】最小割-经典模型 两种方法

    题目链接 题意:A.B两个公司要买一些资源(他们自己买的资源不会重复),一个资源只能卖给一个公司.问最大收益. simple input 部分: 54 1 //买到1就给54元 15 2 33 3 2 ...

  8. viewDidLoad方法的调用顺序

      https://www.evernote.com/shard/s227/sh/01307822-de66-448d-8bac-7954f01ffc64/185b44c2bf5b6e266f4bed ...

  9. Linux下安装php环境并且配置Nginx支持php-fpm模块[www]

    Linux下安装php环境并且配置Nginx支持php-fpm模块 http://www.cnblogs.com/freeweb/p/5425554.html 5分钟搭建 nginx +php --- ...

  10. SQLAlchemy ORM教程之二:Query

    from:https://www.jianshu.com/p/8d085e2f2657 这是继SQLAlchemy ORM教程之一:Create后的第二篇教程.在上一篇中我们主要是解决了如何配置ORM ...