基于JQuery的ajax前后端數(shù)據(jù)交互

打開頁面即發(fā)送請求

$(document).ready(function(){  //打開頁面執(zhí)行
    $.post("",{},function(data){ //發(fā)送請求,data 為接收的數(shù)據(jù)
        //方式1
        var content='content='+data;
        eval(content); //把數(shù)據(jù)進(jìn)行轉(zhuǎn)換,用content.調(diào)用,eval 是魔鬼?。?!
        //方式2 (推薦)
        var content = JSON.parse(data);
    })
});

像后臺發(fā)送內(nèi)容(不包含文件)

$.ajax({
    url:"",  //發(fā)送文件文件地址
    type:"post",   //發(fā)送方式post/get ……,也可以用method指定請求方式
    headers: { 'Accept':' */*' },  //按需求填,一般不用寫
    async:false,  //同步
    contentType: 'application/json',  // 發(fā)送json 時添加,否則發(fā)送的是formdata
    dataType:'json',  // 發(fā)送json 時添加,否則發(fā)送的是formdata
    data:{  //發(fā)送的數(shù)據(jù),如果發(fā)json -> data:JSON.stringify(json);
        "name":key,//name自己定,key事先獲取
    },   
    success:function(data){ //成功執(zhí)行方法
        if(data==0){
            window.location.href='/';//頁面重定向
        }
    }
})

PS:上邊兩種ajax寫法作用相同,第一種是簡寫

向后臺發(fā)送文件+數(shù)據(jù)

var formdata=new FormData(); // 發(fā)文件一定要有這句話
// 獲取到文件
var oFiles = document.querySelector("input#Idfile2");    
//將文件添加到發(fā)送的結(jié)果里,oFiles 要一樣
formdate.append(oFiles.name, oFiles.files[0]);
//上傳文件寫在前邊
//input 輸入內(nèi)容 val()
var text = $("input[type='text']").eq(i).val(); 
//把內(nèi)容添加到傳送結(jié)果里
formdata.append(text.attr("name"),text); 
//有文件傳輸時要這樣寫
$.ajax({
    url:"",//請求地址(后端接口)
    type:"post",//請求方式
    async:false,
    data:formdata,
    cache: false,  
    contentType: false,
    processData: false, 
    //data 是后臺返回來的值,可自己取名 
    success:function(data){   
        if(data==0){
            //打開一個新的頁面
            window.location.href='/'; 
        }
    }
})

json發(fā)送(簡寫)

$("").click(function(){ //點擊執(zhí)行函數(shù)
    //先創(chuàng)建一個對象
    var obj = {}; 
    //  xxx 為自定義
    obj.xxx = $("input[name$='name']").val(); 
    //(必須要寫),把對象變成json   
    var abc = JSON.stringify(obj);
    $.post("", {"data": abc}, function (ct) {   
        //省略
    })
});

最后再來粗略的說一下ajax中的一些參數(shù),

async

async: true,默認(rèn)為true,即異步方式,ajax 執(zhí)行后,會繼續(xù)執(zhí)行ajax后面的腳本,直到服務(wù)器端返回數(shù)據(jù)后,觸發(fā)$.ajax里的success方法,這時候執(zhí)行的是兩個線程。
async:false,同步請求,在沒有得到后端返回值之前,不繼續(xù)向下執(zhí)行。

cache

cache只在type:get下有效。
cache: false,在url后面加一個時間綴,不緩存,從服務(wù)器上重新獲取數(shù)據(jù)。
cache: true,讀取緩存,如果數(shù)據(jù)已經(jīng)請求過,則不再請求服務(wù)器。

contentType

表示發(fā)送信息至服務(wù)器時內(nèi)容編碼類型,通俗點說就是告訴服務(wù)器從瀏覽器提交過來的數(shù)據(jù)格式。默認(rèn)值為:contentType : "application/x-www-form-urlencoded".在默認(rèn)情況下,內(nèi)容編碼類型滿足大多數(shù)情況。但是當(dāng)使用formData傳輸文件時,http協(xié)議中并不支持文件傳輸,所以 contentType: false,則避免 JQuery 對其操作,從而失去分界符,而使服務(wù)器不能正常解析文件。

processData

要求為Boolean類型的參數(shù),默認(rèn)為true。默認(rèn)情況下,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對象(從技術(shù)角度來講并非字符串)以配合默認(rèn)內(nèi)容類 型"application/x-www-form-urlencoded"。如果要發(fā)送DOM樹信息或者其他不希望轉(zhuǎn)換的信息,請設(shè)置為false。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容