• ajax


    jquery_ajax:

    function ajaxClick1() {
    $.ajax({
    url:'ajax1.html',
    type:'GET',
    data:{'p':123},
    success:function (arg) {
    console.log(arg)
    }
    })
    }

    原生ajax
    GET请求:

    function ajaxClick2() {
    var xhr = new XMLHttpRequest(); //创建对象
    xhr.onreadystatechange = function() { //模拟jquery回调函数
    if (xhr.readyState){
    console.log(xhr.responseText)
    }
    };
    xhr.open('GET','/ajax1.html?p=123');
    xhr.send(null);
    }

    django POST请求:
    function ajaxClick4() {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
    if (xhr.readyState){
    console.log(xhr.responseText)
    }
    };
    xhr.open('POST','/ajax1.html');
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xhr.send('p=123');
    }

    iframe仿造ajax请求
    html:

    <h3>iframe伪造ajax</h3>
    <iframe name="ifra" id="iframe"></iframe>
    <form id="fm" action="ajax1.html" method="post" target="ifra">
    <input type="text" name="name">
    <a onclick="ajaxClick5()">提交</a>
    </form>

    js:

    function ajaxClick5() {
    document.getElementById('iframe').onload = iframeClick;
    document.getElementById('fm').submit();
    }

    function iframeClick() {
    var ifr_load = this.contentWindow.document.body.innerHTML;
    var obj = JSON.parse(ifr_load);
    if (obj.status){
    alert(obj.message)
    }
    }

    jquery_ajax上传文件
    function ajaxUpload() {
    var data = new FormData(); 创建FROMDATA对象
    data.append('k1','v1');
    data.append('k2','v2');
    data.append('k3',document.getElementById('files').files[0]);
    $.ajax({
    url:'/ajax1.html',
    type:'POST',
    data:data,
    success:function (arg) {
    console.log(arg);
    },
    processData:false,
    contentType:false
    })
    }


    原生ajax上传文件:

    function ajaxUpload1() {
    var data = new FormData();
    data.append('k1','v1');
    data.append('k2','v2');
    data.append('k3',document.getElementById('files').files[0]);
    var xhr = new XMLHttpRequest();
    xhr.open('POST','/ajax1.html');
    xhr.onreadystatechange = function () {
    if (xhr.readyState){
    console.log(xhr.responseText)
    }
    };
    xhr.send(data);
    }


    iframe伪造ajax上传文件

    HTML:

    <iframe name="iframe" id="iframeUpload" style="display: none"></iframe>
    <form id="fm" action="/ajax1.html" method="post" enctype="multipart/form-data" target="iframe">
    <input type="text" name="k1">
    <input type="text" name="k2">
    <input type="file" name="k3">
    <a onclick="ajaxSubmit()">提交</a>
    </form>

    js:

    <script>
    function ajaxSubmit() {
    document.getElementById('iframeUpload').onload = iframeUploadFiles;
    document.getElementById('fm').submit();
    }

    function iframeUploadFiles() {
    var data = this.contentWindow.document.body.innerHTML;
    obj = JSON.parse(data);
    if (!obj.status) {
    alert(obj.message)
    }
    }
    </script>


    
    

    django不通过FORM组件上传文件:

    def ajax1(request):
    data = {'status':True,'message':'...'}
    print(request.GET)
    print(request.POST)
    file_name = request.FILES['k3']
    with open('123','wb') as file:
    for i in file_name.chunks():
    file.write(i)
    import json
    return HttpResponse(json.dumps(data))




    iframe伪造ajax上传图片,让图片可以在html预览:

    html:
    <iframe name="iframe" id="iframe_files"></iframe>
    <form id="fm" action="/ajax_upload.html" method="post" enctype="multipart/form-data" target="iframe">
    <input type="file" name="k3" onchange="ajaxSubmit()"> #使用onchange监测状态,状态改变后触发函数执行
    </form>
    <div id="img_upload"></div>

    js:
    <script>
    function ajaxSubmit() {
    document.getElementById('iframe_files').onload = uploadFiles;
    document.getElementById('fm').submit();
    }
    function uploadFiles() {
    var obj = this.contentWindow.document.body.innerHTML;
    var file_status = JSON.parse(obj);
    if (file_status.status) {
    var create_img_tag = document.createElement('img');
    create_img_tag.src = file_status.data;
    document.getElementById('img_upload').innerHTML = ""; #js实现清空标签内容
    document.getElementById('img_upload').appendChild(create_img_tag);
    }
    }
    </script>

    django代码部分:
    def upload_files(request):
    return render(request,'upload_files.html')


    def ajax_upload(request):
    nid = str(uuid.uuid4()) #引入UUID4让每张图片名字不同
    ret = {'status':True,'data':None,'message':None}
    obj = request.FILES.get('k3')
    files_path = os.path.join('static', nid + obj.name) #图片储存在静态文件夹内
    with open(files_path,'wb') as file:
    for chunk in obj.chunks():
    file.write(chunk)
    ret['data'] = files_path
    return HttpResponse(json.dumps(ret))
    
    
  • 相关阅读:
    派生选择器
    HTML 标签
    $.get()
    CC150
    CC150
    CC150
    CC150
    HashMap和HashTable的区别
    CC150
    quickSort
  • 原文地址:https://www.cnblogs.com/louzi/p/9245858.html
Copyright © 2020-2023  润新知