JS 动态创建上传表单,通过iframe模拟Ajax 无刷新
2014-02-19 17:24
621 查看
<script>
window.onload=function(){
upfile('file.php');
}
/*
** url 路径
**/
function upfile(url){
//创建iframe
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.id = 'iframeName';
iframe.name = 'iframeName';
iframe.style.display = 'none';
//创建form
var turnForm = document.createElement("form");
document.body.appendChild(turnForm);
turnForm.method = 'post';
turnForm.action = url;
turnForm.encoding = "multipart/form-data";
turnForm.name = 'formNamer';
turnForm.target = 'iframeName';
//创建隐藏表单
var newElement = document.createElement("input");
newElement.setAttribute("name","inputname");
newElement.setAttribute("type","file");
newElement.setAttribute("value",'');
turnForm.appendChild(newElement);
}
//form提交
function formSubmit() {
//var res = document.formNamer.inputname.value;
document.formNamer.submit();
}
//返回值
function callback(result){
//window.parent.document.getElementById('iframeName').style.display = 'block'; 通过iframe 查看后台数据
if(result['error'] == 0){
document.getElementById('test').src= result['img'][1]+'/'+result['img'][2];
}else if(result['error'] == 1){
alert(result['meg']);
}else if(result['error'] == 2){
alert(result['meg']);
}else if(result['error'] == 3){
alert(result['meg']);
}else if(result['error'] == 4){
alert(result['meg']);
}else{
alert(result['meg']);
}
}
</script>
<a href="javascript:formSubmit()">上传</a>
<img src="http://blog.163.com/zhwxl_zyx/blog/img/pasic.jpg" id="test" width="200" height="200">
----------------------------------------------------- 华丽分割线----------------------------------------------------
file.php
<?php
header("content-Type: text/html; charset=Utf-8");
if(@is_uploaded_file($_FILES['inputname']['tmp_name'])){
$f = $_FILES['inputname'];
$name = $f["name"];
$size = $f["size"];
$type = $f["type"];
$fileName = $f["tmp_name"];
switch ($type) {
case 'image/jpg':$okType = true;
break;
case 'image/jpeg':$okType = true;
break;
case 'image/png':$okType = true;
break;
case 'image/gif':$okType = true;
break;
}
if($okType){
$error = $f["error"];
echo '文件名称:'.$name.'<br>';
echo '文件类型:'.$type.'<br>';
echo '文件大小:'.round($size/1024).'K<br>';
echo '文件临时存放路径:'.$fileName.'<br>';
$fileDir = dirname(__FILE__).'/img/upfile'.time().$name;
$img = explode('/',$fileDir);
move_uploaded_file($fileName, $fileDir);
$data = array();
$data['img'] = $img;
$data['name'] = $name;
$data['type'] = $type;
$data['size'] = $size;
$data['filename'] = $fileName;
$data['fileDir'] = $fileDir;
if($error==0){
/*echo '上传成功!';
echo '预览:';
echo "<img src="http://blog.163.com/zhwxl_zyx/blog/.$img[1].'/'.$img[2]." width='200' height='200'><br>";
echo '文件名称'.$img[2];*/
$data['error'] = 0;
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif($error==1){
$data['error'] = 1;
$data['meg'] = '超过了文件大小,在php.ini文件中设置';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==2){
$data['error'] = 2;
$data['meg'] = '超过了文件的大小MAX_FILE_SIZE选项指定的值';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==3){
$data['error'] = 3;
$data['meg'] = '文件只有部分被上传';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==4){
$data['error'] = 4;
$data['meg'] = '没有文件被上传';
exit("<script>parent.callback(".json_encode($data).");</script>");
}else{
$data['meg'] = '上传文件大小为0';
exit("<script>parent.callback(".json_encode($data).");</script>");
}
}
}else{
$data['error'] = 4;
$data['meg'] = '没有文件被上传';
exit("<script>parent.callback(".json_encode($data).");</script>");
}
?>
window.onload=function(){
upfile('file.php');
}
/*
** url 路径
**/
function upfile(url){
//创建iframe
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.id = 'iframeName';
iframe.name = 'iframeName';
iframe.style.display = 'none';
//创建form
var turnForm = document.createElement("form");
document.body.appendChild(turnForm);
turnForm.method = 'post';
turnForm.action = url;
turnForm.encoding = "multipart/form-data";
turnForm.name = 'formNamer';
turnForm.target = 'iframeName';
//创建隐藏表单
var newElement = document.createElement("input");
newElement.setAttribute("name","inputname");
newElement.setAttribute("type","file");
newElement.setAttribute("value",'');
turnForm.appendChild(newElement);
}
//form提交
function formSubmit() {
//var res = document.formNamer.inputname.value;
document.formNamer.submit();
}
//返回值
function callback(result){
//window.parent.document.getElementById('iframeName').style.display = 'block'; 通过iframe 查看后台数据
if(result['error'] == 0){
document.getElementById('test').src= result['img'][1]+'/'+result['img'][2];
}else if(result['error'] == 1){
alert(result['meg']);
}else if(result['error'] == 2){
alert(result['meg']);
}else if(result['error'] == 3){
alert(result['meg']);
}else if(result['error'] == 4){
alert(result['meg']);
}else{
alert(result['meg']);
}
}
</script>
<a href="javascript:formSubmit()">上传</a>
<img src="http://blog.163.com/zhwxl_zyx/blog/img/pasic.jpg" id="test" width="200" height="200">
----------------------------------------------------- 华丽分割线----------------------------------------------------
file.php
<?php
header("content-Type: text/html; charset=Utf-8");
if(@is_uploaded_file($_FILES['inputname']['tmp_name'])){
$f = $_FILES['inputname'];
$name = $f["name"];
$size = $f["size"];
$type = $f["type"];
$fileName = $f["tmp_name"];
switch ($type) {
case 'image/jpg':$okType = true;
break;
case 'image/jpeg':$okType = true;
break;
case 'image/png':$okType = true;
break;
case 'image/gif':$okType = true;
break;
}
if($okType){
$error = $f["error"];
echo '文件名称:'.$name.'<br>';
echo '文件类型:'.$type.'<br>';
echo '文件大小:'.round($size/1024).'K<br>';
echo '文件临时存放路径:'.$fileName.'<br>';
$fileDir = dirname(__FILE__).'/img/upfile'.time().$name;
$img = explode('/',$fileDir);
move_uploaded_file($fileName, $fileDir);
$data = array();
$data['img'] = $img;
$data['name'] = $name;
$data['type'] = $type;
$data['size'] = $size;
$data['filename'] = $fileName;
$data['fileDir'] = $fileDir;
if($error==0){
/*echo '上传成功!';
echo '预览:';
echo "<img src="http://blog.163.com/zhwxl_zyx/blog/.$img[1].'/'.$img[2]." width='200' height='200'><br>";
echo '文件名称'.$img[2];*/
$data['error'] = 0;
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif($error==1){
$data['error'] = 1;
$data['meg'] = '超过了文件大小,在php.ini文件中设置';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==2){
$data['error'] = 2;
$data['meg'] = '超过了文件的大小MAX_FILE_SIZE选项指定的值';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==3){
$data['error'] = 3;
$data['meg'] = '文件只有部分被上传';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==4){
$data['error'] = 4;
$data['meg'] = '没有文件被上传';
exit("<script>parent.callback(".json_encode($data).");</script>");
}else{
$data['meg'] = '上传文件大小为0';
exit("<script>parent.callback(".json_encode($data).");</script>");
}
}
}else{
$data['error'] = 4;
$data['meg'] = '没有文件被上传';
exit("<script>parent.callback(".json_encode($data).");</script>");
}
?>
相关文章推荐
- js动态创建上传表单通过iframe模拟Ajax实现无刷新
- js动态创建上传表单通过iframe模拟Ajax实现无刷新
- 页面无刷新ajax上传文件--模拟iframe,超简单
- ajax(iframe)无刷新提交表单、上传文件
- 通过修改ajaxFileUpload.js实现多图片动态上传并实现预览
- ajax(iframe)无刷新提交表单、上传文件
- 通过JS动态添加上传表单---制作多个上传的静态页面
- 页面无刷新ajax上传文件--模拟iframe,超简单
- ajax(iframe)无刷新提交表单、上传文件
- 页面无刷新ajax上传文件--模拟iframe,超简单
- js实现手机端可以上拉刷新,动态通过ajax从后台获取数据
- js 异步表单提交,图片上传,兼容异步模拟ajax技术
- js_ajax模拟form表单提交_多文件上传_支持单个删除
- ajax(iframe)无刷新提交表单、上传文件
- dhl:页面无刷新ajax上传文件--模拟iframe,超简单
- Jquery ajaxfileupload.js结合.ashx文件实现无刷新上传
- form表单的action提交写到js中来,同时onclick事件也写在js中来。其action也可以通过ajax来提交的。
- 通过Ajax使用FormData对象无刷新上传文件
- 通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
- 原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)