FormDataおよびjqAjaxパラメータ

3838 ワード

一.FormData(HTML 5オブジェクト、IE 10未満のIEブラウザではサポートする)は、フォームデータのキー値ペアを表す構造を提供する、そのデータをXMLHttpRequestとして使用することができる.send()メソッド送出
一般的な方法:1.FormData.append(key,value)/FormDataオブジェクトにキー値ペアを追加する.FormData.delete(key)//指定したkeyと対応するvalueを削除し、同じkeyが複数削除されます.FormData.get(key)//指定keyの値を取得し、複数であれば1番目(IE、Safariは全くサポートしていない)4を返す.FormData.getall(key)//指定keyのすべての値を取得し、配列に戻る(IE、Safariは全くサポートしていない).FormData.has(key)/指定したkeyが含まれているかどうかは、boolean値を返します(IE、Safariはまったくサポートしていません).FormData.set()/オブジェクトのキーに新しい値を設定し、キーが存在しない場合に追加します.(IE,Safariは全くサポートしていません)
例1(フォームを使用してFormDataオブジェクトを構築し、formラベルにenctype=「multipart/form-data」を追加する必要がある)

  
var submit=document.querySelector("#submit"); submit.onclick=function(){ var myForm = document.getElementById('myForm'); var formData = new FormData(myForm); // FormData console.log(formData) // , get getAll var xhr=new XMLHttpRequest(); xhr.open("post",postUrl); xhr.send(formData); xhr.onload=function(){ if(xhr.status==200){ //... } } }

例2(フォームを使用しないFormDataオブジェクト)
var formData = new FormData(); formData.append('file', $('#file')[0].files[0]); $.ajax({ url: '/upload', type: 'post', cache: false, data: formData, processData: false, contentType: false, success:function(){ } })

二.jqueryのajaxリクエスト共通パラメータの詳細
$.ajax({
    url: 'xxx',     //     
    type: 'post',       //     (post get),  get
    timeout: 2000,      //       ,  
    async: true,        //         ,  true
    data: formData,      //          
    dataType: 'json',    //             ,  xml,html,script,json,jsonp,text
    cache: false,         //             ,   true

    /*
     *  contentType          
     *  "application/x-www-form-urlencoded",  (    key value   ,   &  )
     *  "application/json",     json  , JSON.stringfy      ,    JSON.parse    
     *  false,        Content-Type(  form      enctype="multipart/form-data",    contentType     multipart/form-data)
    */  
    contentType:false, 

    processData: false, //                  ,  true,(   false,  data  FormData  ,  FormData      URL  。)
    context:{some:'value'}, //     AJAX           "this"  。
    username:'username', //   HTTP          
    password:'password', //   HTTP         
    global:true, //     true,          AJAX       。
    ifModified:false,  //     false。                。  HTTP Last-Modified     。

    /*
     *  traditional  ,              ,    false,jquery          。
     *     true       ,    request.getParameterValues()         
    */
    traditional:false, 

    beforeSend:function(xhr){  //           
    //           
    $("#submit").attr({ disabled: "disabled" });
    },
    success:function (data) { //    
    console.log(data);
    console.log(this.some) // 'value'
    },
    error:function(xhr, status, err){ //    
    
    },
    complete: function (xhr, status) { //       
        
    if (status == 'timeout') {  
        ajaxTimeOut.abort(); //    
         
        alert('  ')
    }
     
    }


});