打開頁面即發(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。