AJAX
資料來源:
資料來源:w3school
$.ajax({
url: URLs,
data: $('#sentToBack').serialize(), // 傳送表單資料
type:"POST",
dataType:'text',
success: function(msg){
alert(msg);
},
error:function(xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
url:
指定要進行呼叫的位址。
data:
傳送至Server的資料,會自動轉為 query string
的型式,如果是 GET
請求還會幫你附加到URL上。可用 processData
選項禁止此自動轉換。物件型式則為一 Key / Value pairs
。這個範例程式,是使用serialize()
,會把name為 sentToBack
的表單 <form>
中的資料傳送出去,型態的部分要看type的設定,一般表單都是用 POST
或是 GET
。
GET :
's=1&t=2'
POST :
{'s':1,'t':'qq'}
// 接起來的樣子用GLOBALS變數自己看吧。
var_dump($GLOBALS);
type:
請求方式,POST/GET。
(或 PUT/DELETE)
dataType:
預期Server傳回的資料類型,如果沒指定,jQuery會根據HTTP MIME Type自動選擇以responseXML或responseText傳入你的success callback。
可選的資料類型有:
xml:傳回可用jQuery處理的XML
html:傳回HTML,包含jQuery會自動幫你處理的script tags。
script:傳回可執行的JavaScript。(script不會被自動cache,除非cache設為true)
json:傳回JSON
jsonp:在URL加上?callback=?參數,並在Server端配合送回此jsonp callback。
text:傳回純文字字串。
success:
請求成功時執行函式。
function (data, textStatus) {
// data 可以是 xmlDoc, jsonObj, html, text, 但還是要參考datatype
}
error:
請求失敗時執行函式。
function (xhr, ajaxOptions, thrownError) {
//通常ajaxOptions或thrownError只有一個有值
}
這個很重要,因為有時候Sever寫好的程式不容易測試,可以透過這個函數把錯誤顯示出來。
其他可能比較會用的參數:
complete:
請求完成時執行的函式(不論結果是success或error)。
function (XMLHttpRequest, textStatus) {
// the options for this ajax request
}
beforeSend:
發送請求之前可在此修改XMLHttpRequest物件,如添加header等,你可以在此函式中return flase取消Ajax request。
function (XMLHttpRequest) {
// the options for this ajax request
}
processData:
預設 true
會將GET變數自動轉換到url後方,可設定 false
禁止它。
Headers :
基於安全性考量 ,在 HTTP header 欄位 添加非標準請求欄位,有很多可視形況添加。
** "X-Frame-Options" : "DENY",
**
// 表示文件無論如何都不能被嵌入到 frame 中,即使是自家網站也不行。
**"X-XSS-Protection": "1; mode=block" **
// 在所有的網路區域啟用保護,並設定為阻擋模式(blocking mode)。意味著只要瀏覽器覺得XSS攻擊發生就馬上阻擋網站行為,然後跳出訊息顯示已阻擋。
headers: {
"X-Frame-Options":"DENY",
"X-Frame-Options":"DENY",
}
// 或者
beforeSend: function(xhr) {
xhr.setRequestHeader("X-Frame-Options", "DENY");
xhr.setRequestHeader("X-Frame-Options", "DENY");
}
對敏感性資料,比如說員工 ID 使用UUID。
不要給予過多非當前所需資料。
對查詢資料做關聯檢查,比如是否為該訂單者的訂單。
在header限制資料型態 X-Content-Type-Options: nosniff ,強制使用 Content-Type 設定的型態來回應。