博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iframe和DataForm
阅读量:7227 次
发布时间:2019-06-29

本文共 3552 字,大约阅读时间需要 11 分钟。

 一、iframe使用

iframe在一个页面中,相当于整个window窗口的子窗口,可通过页面的元素结构查看。

学习iframe

……function ajaxSubmit5() { document.getElementById('iframe').onload = reloadIframe; $('#form').submit();}function reloadIframe() { //ret = this.contentWindow.document.body.innerText ret = $(this).contents().find('body').text() data = JSON.parse(ret) if (data.status == 'success') alert('welcome')}
创建iframe和Form表单
def ajax1(request):    print(request.GET)    print(request.POST)    print(request.body)    ret = {
'status':'success','data':[1,'hello']} return HttpResponse(json.dumps(ret))
后台处理函数

执行过程:

①在输入框输入内容并点击提交,执行ajaxSubmit5(),并通过submit()向后台提交数据;

②由于在form表单中设置了target="ifra",即target为iframe的name值,因此后台HttpResponse的返回值传递给iframe

③后台向iframe传递返回值时,即onload触发reloadIframe()

④在reloadIframe()中,通过this.contentWindow.document.body.innerText获取iframe的显示内容,即HttpResponse的返回值,再进行判断。

      

二、利用iframe+form上传文件

模板
function ajaxSubmit8() {    $('#form1').submit();    document.getElementById('iframe1').onload = reloadIframe1;}        function reloadIframe1() {    ret = this.contentWindow.document.body.innerHTML    data = JSON.parse(ret)    if (data.status == 'success')        alert('welcome')}
iframe+form
def ajax1(request):    print(request.POST)    print(request.FILES)    obj = request.FILES.get('k3')    file_path = os.path.join('static', obj.name)    with open(file_path, 'wb') as f:        for line in obj.chunks():            f.write(line)    ret = {
'status':'success','data':[1,'hello']} return HttpResponse(json.dumps(ret))
后台处理函数

三、利用ajax+FormData上传文件

……
模板
function ajaxSubmit6() {    var data = new FormData()  //使用FormData时,需要在ajax中添加processData和contentType两个参数    data.append('k1','v1')    data.append('k2','v2')    f = $('#img')[0].files[0]    data.append('k3',f)    $.ajax({        url:'ajax1',        type:'POST',        data:data,        processData:false,        contentType:false,        success:function (arg) {            console.log(arg)        }    })}function ajaxSubmit7() {    var data = new FormData()    //使用FormData来传递数据时,无论是使用jQuery还是原生的XMLHttpRequest,都不能在后台使用request.body,数据在request.POST和request.FILES中    data.append('k1','v1')    data.append('k2','v2')    f = $('#img')[0].files[0]    data.append('k3',f)    var xhr = new XMLHttpRequest();    xhr.onreadystatechange = function(){        if(xhr.readyState == 4)            console.log(xhr.responseText);    }    xhr.open('POST','ajax1');    xhr.send(data);}
ajax+FormData
def ajax1(request):    print(request.POST)    print(request.FILES)    obj = request.FILES.get('k3')    file_path = os.path.join('static', obj.name)    with open(file_path, 'wb') as f:        for line in obj.chunks():            f.write(line)    ret = {
'status':'success','data':[1,'hello']} return HttpResponse(json.dumps(ret))
后台处理函数

 四、利用iframe+form上传并生成图片预览

预览
模型
def upload_file(req):    if req.method == 'GET':        return render(req,'upload.html')    else:        ret = {
'status': True, 'data': None, 'message': None} obj = req.FILES.get('k3') nid = str(uuid.uuid4()) file_path = os.path.join('static', nid + obj.name) with open(file_path, 'wb') as f: for line in obj.chunks(): f.write(line) ret['data'] = file_path return HttpResponse(json.dumps(ret))
后台处理函数
iframe+form

 

转载于:https://www.cnblogs.com/Forever77/p/10905773.html

你可能感兴趣的文章
struts2+hibernate3+spring3(ssh2)框架下的web应用
查看>>
Linux下的三个时间属性
查看>>
semanage
查看>>
[case分享]Exchange 2010 登陆OWA查看邮件出现Rights managem operation failed
查看>>
linux dd 读取 写入磁盘速度
查看>>
dmidecode查看linux硬件信息
查看>>
linux监控对象及重要性
查看>>
walle-web自动化部署配置
查看>>
opencv轮廓提取、轮廓识别相关要点
查看>>
BOOST.ASIO源码剖析(一)
查看>>
过滤squidlog中各个链接的大小
查看>>
我的友情链接
查看>>
使用AnyChat如何实现任意两用户之间的音视频交互
查看>>
【个人小结】项目公共js的配置,解决不同页面多个配置修改的问题
查看>>
XAMP安装Apacher无法启动
查看>>
mongodb user
查看>>
ip地址子网划分
查看>>
Linux下快速搭建ntp时间同步服务器
查看>>
TouchEvent的传递过程学习笔记
查看>>
Android笔记--TCP Scoket(字符串收发)
查看>>