Ajax 使用formdata 实现 无刷新表单上传
FormData对象的作用就类似于这里的serialize()方法,不过FormData是浏览器原生的,且支持二进制文件
1.这里实现一个无刷新上传图片,成功后页面显示
点击button 触发隐藏的 input上传

view层
<img id='headimage' src="data:images/default_tx.jpeg" width="80" height="80" style="border-radius: 5px;" />
<div style="width: 100%; height: auto; text-align: center; margin-top: 10px;">
<span style="font-family:Arial;"> </span> <input type="button" class="btn btn-default btn-sm" value="上传头像" onclick="getElementById('inputfile').click()" />
<form id="submit_form11">
<input type="file" name="image" style="display:none;" id="inputfile"/></div>
</form>
JS
formData里面存储的数据形式,一对key/value组成一条数据,key是唯一的,一个key可能对应多个value。如果是使用表单初始化,每一个表单字段对应一条数据,它们的HTML name属性即为key值,它们value属性对应value值。
//1.可以通过form表单获取
var form = $("#submit_form11")[0];
var form = document.getElementById("submit_form11");
//两种写法相同,获取表单对象节点
var data = new FormData(form);
//表单来初始化 //2.可以直接获取对象存入formdata
var data = new FormData();
//$.each($('#inputfile')[0].files, function(i, file) {
//data.append('image', file);
//});
data.append("image" , $("#inputfile")[0].files[0]);
//这种方法就不用使用form标签了 // var image = formData.get("image");
//formdata提供get方法可以获取存入的值
data.append('cid',<?php echo $info['cid']; ?>)
// 当然也可以在此基础上,添加其他数据 //上传
$.ajax({
url:"index.php?r=cus-main/upimage",
type:'POST',
data:data,
cache: false,
contentType: false, // 不处理发送的数据,因为data值是Formdata对象,必须false才会自动加上正确的Content-Type
processData: false, // 必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
success:function(data){
if(data['code']==101)
{
$('#headimage').attr('src',data['url']);
$('#tips').css('display','none');
}else
{
alert('图片上传失败');
} },
error:function(){
alert('图片上传失败');)
}
});
后台处理
获取文件图片 使用 $_FILES['image'] 获取一般键值 使用$_POST['cid']
Ajax 使用formdata 实现 无刷新表单上传的更多相关文章
- ajax+FormData+javascript实现无刷新表单信息提交
ajax+FormData+javascript实现无刷新表单信息提交 原理: dom收集表单信息,利用FormData快速收集表单信息 ,实例化表单数据对象 同时收集fm的表单域信息. var f ...
- ajax+FormData+javascript 实现无刷新表单注册
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- DWZ框架Ajax无刷新表单提交处理流程
DWZ框架Ajax无刷新表单提交处理流程是: 1. ajax表单提交给服务器 2. 服务器返回一个固定格式json结构 3. js会调函数根据这个json数据做相应 ...
- ajax方式提交带文件上传的表单,上传后不跳转
ajax方式提交带文件上传的表单 一般的表单都是通过ajax方式提交,所以碰到带文件上传的表单就比较麻烦.基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数 ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
- 普通文件的上传(表单上传和ajax文件异步上传)
一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...
- 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType
回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...
- 文件的上传(1)(表单上传和ajax文件异步上传)
文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...
- django 基于form表单上传文件和基于ajax上传文件
一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...
随机推荐
- 生产服务器环境最小化安装后Centos 6.5优化配置备忘
生产服务器环境最小化安装后 Centos 6.5优化配置备忘 本文 centos 6.5 优化 的项有18处,列表如下: 1.centos6.5最小化安装后启动网卡 2.ifconfig查询IP进行S ...
- The base command for the Docker CLI.
Description The base command for the Docker CLI. Child commands Command Description docker attach At ...
- JAVA多线程---好的博客资源收集
个人笔记,备忘 1.http://blog.csdn.net/column/details/concurrency.html 兰亭风雨的专栏 2.http://lavasoft.blog.51c ...
- 【BZOJ1475】方格取数 [最小割]
方格取数 Time Limit: 5 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 在一个n*n的方格里,每个格子里都有一 ...
- bzoj 1064 图论
我们根据能否看见建图,有向图边权设成1,然后我们转成无向图, 对于每条有向边连一条反边,边权是-1,然后从每个块中任意一个点开始 dfs,每个点有一个值,经过一条边到另一个点之后,用原来的点值和边权 ...
- 程序异常退出 却没有产生core文件
程序异常退出 却没有产生core文件 http://www.cnblogs.com/my_life/articles/4107333.html
- css3带你实现酷炫效果
css3 私有前缀 -webkit- chrome/safari等webkit内核浏览器 -moz- firfox -o- opera -ms- IE css3 盒子模型 box-sizing 值co ...
- Nightmare安装and一个小例子
前端的功能测试 官方说法A high-level browser automation library,翻译过来就是高级浏览器自动化库 常用于UI测试和爬网 功能测试必须在真正浏览器做,现在有四种方法 ...
- HTML-坦克大战-完成子弹连发功能(三)
如题,完成子弹连发功能,上一篇博客遗留的问题,不能够连发,且一直按J键则第一颗子弹会消失:那是因为定义的子弹变量只是一个变量,现在定义成一个数组:在之前的代码上修改如下: <!DOCTYPE h ...
- pandas求五日线并画图
import pandas as pd import numpy as np import matplotlib.pyplot as plt stock_data = pd.read_csv('000 ...