亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery中ajax的使用與緩存問題的解決方法

2019-11-20 21:25:44
字體:
來源:轉載
供稿:網友

1:GET訪問 瀏覽器 認為 是等冪的
就是 一個相同的URL 只有一個結果[相同是指 整個URL字符串完全匹配]
所以 第二次訪問的時候 如果 URL字符串沒變化 瀏覽器是 直接拿出了第一次訪問的結果

POST則 認為是一個 變動性 訪問 (瀏覽器 認為 POST的提交 必定是 有改變的)

防止 GET 的 等冪 訪問 就在URL后面加上 ?+new Date();,[總之就是使每次訪問的URL字符串不一樣的]

設計WEB頁面的時候 也應該遵守這個原則

2:一.談Ajax的Get和Post的區別

Get方式:
用get方式可傳送簡單數據,但大小一般限制在1KB下,數據追加到url中發送(http的header傳送),也就是說,瀏覽器將各個表單字段元素及其數據按照URL參數的格式附加在請求行中的資源路徑后面。另外最重要的一點是,它會被客戶端的瀏覽器緩存起來,那么,別人就可以從瀏覽器的歷史記錄中,讀取到此客戶的數據,比如帳號和密碼等。因此,在某些情況下,get方法會帶來嚴重的安全性問題。

Post方式:
當使用POST方式時,瀏覽器把各表單字段元素及其數據作為HTTP消息的實體內容發送給Web服務器,而不是作為URL地址的參數進行傳遞,使用POST方式傳遞的數據量要比使用GET方式傳送的數據量大的多。

總之,GET方式傳送數據量小,處理效率高,安全性低,會被緩存,而POST反之。

使用get方式需要注意:
1 對于get請求(或凡涉及到url傳遞參數的),被傳遞的參數都要先經encodeURIComponent方法處理.例:var url = "update.php?username=" +encodeURIComponent(username) + "&content=" +encodeURIComponent

(content)+"&id=1" ;

使用Post方式需注意:
1.設置header的Context-Type為application/x-www-form-urlencode確保服務器知道實體中有參數變量. 通常使用XmlHttpRequest對象的SetRequestHeader("Context-Type","application/x-www- form-urlencoded;")。例:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
2.參數是名/值一一對應的鍵值對,每對值用&號隔開.如 var name=abc&sex=man&age=18,注意var name=update.php?

abc&sex=man&age=18以及var name=?abc&sex=man&age=18的寫法都是錯誤的;
3.參數在Send(參數)方法中發送,例: xmlHttp.send(name); 如果是get方式,直接 xmlHttp.send(null);

4.服務器端請求參數區分Get與Post。如果是get方式則$username = $_GET["username"]; 如果是post方式,則$username = $_POST["username"];

AJAX亂碼問題

產生亂碼的原因:
1、xtmlhttp 返回的數據默認的字符編碼是utf-8,如果客戶端頁面是gb2312或者其它編碼數據就會產生亂碼
2、post方法提交數據默認的字符編碼是utf-8,如果服務器端是gb2312或其他編碼數據就會產生亂碼

解決辦法有:
1、若客戶端是gb2312編碼,則在服務器指定輸出流編碼
2、服務器端和客戶端都使用utf-8編碼

gb2312:header('Content-Type:text/html;charset=GB2312');

utf8:header('Content-Type:text/html;charset=utf-8');

注意:如果你已經按上面的方法做了,還是返回亂碼的話,檢查你的方式是否為get,對于get請求(或凡涉及到url傳遞參數的),被傳遞的參數都要先經 encodeURIComponent方法處理.如果沒有用encodeURIComponent處理的話,也會產生亂碼.

復制代碼 代碼如下:

$.ajax不緩存版:
$.ajax({
             type:"GET"
    url:'test.html',
    cache:false,
    dataType:"html",
    success:function(msg){
        alert(msg);
    }
       });


jQuery.ajax( options ) : 通過 HTTP 請求加載遠程數據
這個是jQuery 的底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。
$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該對象,但特殊情況下可用于手動終止請求。

注意: 如果你指定了 dataType 選項,請確保服務器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯誤的 MIME 類型可能導致不可預知的錯誤。見 Specifying the Data Type for AJAX Requests 。

當設置 datatype 類型為 'script' 的時候,所有的遠程(不在同一個域中)POST請求都回轉換為GET方式。
$.ajax() 只有一個參數:參數 key/value 對象,包含各配置及回調函數信息。詳細參數選項見下。

jQuery 1.2 中,您可以跨域加載 JSON 數據,使用時需將數據類型設置為 JSONP。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。數據類型設置為 "jsonp" 時,jQuery 將自動調用回調函數。(這個我不是很懂)

參數列表:

名 類型 描述
url  String (默認: 當前頁地址) 發送請求的地址。
type String (默認: "GET") 請求方式 ("POST" 或 "GET"), 默認為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。
timeout Number 設置請求超時時間(毫秒)。此設置將覆蓋全局設置。
async  Boolean (默認: true) 默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。
beforeSend  Function 發送請求前可修改 XMLHttpRequest 對象的函數,如添加自定義 HTTP 頭。XMLHttpRequest 對象是唯一的參數。

function (XMLHttpRequest) {
 this; // the options for this ajax request
}
cache  Boolean (默認: true) jQuery 1.2 新功能,設置為 false 將不會從瀏覽器緩存中加載請求信息。
complete  Function 請求完成后回調函數 (請求成功或失敗時均調用)。參數: XMLHttpRequest 對象,成功信息字符串。

function (XMLHttpRequest, textStatus) {
 this; // the options for this ajax request
}
contentType  String (默認: "application/x-www-form-urlencoded") 發送信息至服務器時內容編碼類型。默認值適合大多數應用場合。
data  Object,
String 發送到服務器的數據。將自動轉換為請求字符串格式。GET 請求中將附加在 URL 后。查看 processData 選項說明以禁止此自動轉換。必須為 Key/Value 格式。如果為數組,jQuery 將自動為不同值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換為 '&foo=bar1&foo=bar2'。
dataType  String 預期服務器返回的數據類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作為回調函數參數傳遞,可用值:

"xml": 返回 XML 文檔,可用 jQuery 處理。

"html": 返回純文本 HTML 信息;包含 script 元素。

"script": 返回純文本 JavaScript 代碼。不會自動緩存結果。

"json": 返回 JSON 數據 。

"jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。

error  Function (默認: 自動判斷 (xml 或 html)) 請求失敗時將調用此方法。這個方法有三個參數:XMLHttpRequest 對象,錯誤信息,(可能)捕獲的錯誤對象。

function (XMLHttpRequest, textStatus, errorThrown) {
 // 通常情況下textStatus和errorThown只有其中一個有值
 this; // the options for this ajax request
}
global  Boolean (默認: true) 是否觸發全局 AJAX 事件。設置為 false 將不會觸發全局 AJAX 事件,如 ajaxStart 或 ajaxStop ??捎糜诳刂撇煌腁jax事件
ifModified  Boolean (默認: false) 僅在服務器數據改變時獲取新數據。使用 HTTP 包 Last-Modified 頭信息判斷。
processData  Boolean (默認: true) 默認情況下,發送的數據將被轉換為對象(技術上講并非字符串) 以配合默認內容類型 "application/x-www-form-urlencoded"。如果要發送 DOM 樹信息或其它不希望轉換的信息,請設置為 false。
success  Function 請求成功后回調函數。這個方法有兩個參數:服務器返回數據,返回狀態

function (data, textStatus) {
 // data could be xmlDoc, jsonObj, html, text, etc...
 this; // the options for this ajax request
}

這里有幾個Ajax事件參數:beforeSend ,success ,complete ,error 。我們可以定義這些事件來很好的處理我們的每一次的Ajax請求。注意一下,這些Ajax事件里面的 this 都是指向Ajax請求的選項信息的(請參考說 get() 方法時的this的圖片)。
請認真閱讀上面的參數列表,如果你要用jQuery來進行Ajax開發,那么這些參數你都必需熟知的。

示例代碼,獲取博客園首頁的文章題目:

復制代碼 代碼如下:

$.ajax({
type: "get",
url: "http://www.cnblogs.com/rss",
beforeSend: function(XMLHttpRequest){
//ShowLoading();
},
success: function(data, textStatus){
$(".ajax.ajaxResult").html("");
$("item",data).each(function(i, domEle){
$(".ajax.ajaxResult").append("<li>"+$(domEle).children("title").text()+"</li>");
});
},
complete: function(XMLHttpRequest, textStatus){
//HideLoading();
},
error: function(){
//請求出錯處理
}
});

jQuery.ajaxSetup( options ) : 設置全局 AJAX 默認選項。
設置 AJAX 請求默認地址為 "/xmlhttp/",禁止觸發全局 AJAX 事件,用 POST 代替默認 GET 方法。其后的 AJAX 請求不再設置任何選項參數。

jQuery 代碼:

復制代碼 代碼如下:

$.ajaxSetup({
url: "/xmlhttp/",
global: false,
type: "POST"
});
$.ajax({ data: myData });

serialize() 與 serializeArray()
serialize() : 序列表表格內容為字符串。
serializeArray() : 序列化表格元素 (類似 '.serialize()' 方法) 返回 JSON 數據結構數據。

示例:
HTML代碼:

復制代碼 代碼如下:

<p id="results"><b>Results: </b> </p>
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select><br/>
<input type="checkbox" name="check" value="check1"/> check1
<input type="checkbox" name="check" value="check2"
checked="checked"/> check2
<input type="radio" name="radio" value="radio1"
checked="checked"/> radio1
<input type="radio" name="radio" value="radio2"/> radio2
</form>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品一区二区三区电影黑人| 欧美自拍大量在线观看| 国产不卡av在线| 国产精品国语对白| 日韩视频精品在线| 青草成人免费视频| 美女撒尿一区二区三区| 欧美午夜www高清视频| 久久不射电影网| 欧美最顶级丰满的aⅴ艳星| 色天天综合狠狠色| 欧美成人国产va精品日本一级| 亚洲精品资源美女情侣酒店| 亚洲国产精品悠悠久久琪琪| 欧美亚洲免费电影| 欧美大片免费观看在线观看网站推荐| 菠萝蜜影院一区二区免费| 日韩一区二区三区国产| 91精品国产综合久久香蕉| 亚洲精品97久久| 欧美一级大片在线免费观看| 免费97视频在线精品国自产拍| 久久成人18免费网站| 日韩中文字幕在线看| 国产一区二区在线播放| 国产精品pans私拍| 久久久久久久久久久91| 日韩综合视频在线观看| 欧美在线视频在线播放完整版免费观看| 欧美性xxxxx极品娇小| 中日韩美女免费视频网站在线观看| 国产精品狼人色视频一区| 久久视频这里只有精品| 亚洲欧美日韩中文在线| 伊人久久五月天| 久久偷看各类女兵18女厕嘘嘘| 日韩久久精品电影| 亚洲日本中文字幕免费在线不卡| 国产精品最新在线观看| 欧美视频专区一二在线观看| 久久久久久久久爱| 亚洲影视九九影院在线观看| 中文字幕欧美国内| 亚洲aa在线观看| 亚洲一区二区三区乱码aⅴ| 日韩成人在线观看| 国产69久久精品成人看| 美女扒开尿口让男人操亚洲视频网站| 欧美日韩xxx| 搡老女人一区二区三区视频tv| 欧美一区二区三区……| 一区二区国产精品视频| 欧美极品少妇xxxxx| 久久精品国产96久久久香蕉| 久久福利视频网| 国产中文字幕91| 一区二区在线视频播放| 国产深夜精品福利| 少妇高潮久久久久久潘金莲| 北条麻妃一区二区三区中文字幕| 亚洲精品自产拍| 日韩精品极品毛片系列视频| 成人亲热视频网站| 欧美体内谢she精2性欧美| 亚洲人成电影在线观看天堂色| 欧美日韩另类在线| 国产精品丝袜视频| 亚洲性生活视频| 国产精品免费久久久| 欧美久久精品一级黑人c片| 一区二区三欧美| 国产又爽又黄的激情精品视频| 亚洲综合成人婷婷小说| 亚洲免费精彩视频| 亚洲第一视频在线观看| 夜夜嗨av色一区二区不卡| 久久精品一本久久99精品| 国产91精品在线播放| 国产精品扒开腿做爽爽爽男男| 久久精品欧美视频| 欧美大奶子在线| 精品视频在线播放色网色视频| 精品日韩视频在线观看| 日韩在线观看av| 精品香蕉一区二区三区| 欧美三级欧美成人高清www| 日韩av免费在线观看| 国产精自产拍久久久久久| 色偷偷噜噜噜亚洲男人的天堂| 国产91对白在线播放| 精品久久久久久亚洲精品| 国产精品吊钟奶在线| 亚洲夜晚福利在线观看| www.午夜精品| 伊人伊人伊人久久| 欧美性理论片在线观看片免费| 亚洲精品国产综合区久久久久久久| 亚洲视频在线观看| 日韩美女在线观看| 日本一区二三区好的精华液| 欧美色视频日本高清在线观看| 色偷偷噜噜噜亚洲男人| 国产精品久久91| 国产不卡av在线免费观看| 日韩最新中文字幕电影免费看| 亚洲国产精品成人一区二区| 午夜精品久久久久久久99热| 欧美日韩国产影院| 久久久久久久久91| 日韩欧美综合在线视频| 国产精品综合网站| 欧美性视频网站| 欧美一级在线播放| 国产精品日韩在线| 欧美日韩国产麻豆| 亚洲女人初尝黑人巨大| 久久中文精品视频| 日韩精品视频在线播放| 亚洲一区二区三区视频播放| 国产精品69久久| 精品国产精品自拍| 国产成人中文字幕| 91在线视频精品| 综合av色偷偷网| 久久视频中文字幕| 国产啪精品视频网站| 成人欧美一区二区三区在线| 2018国产精品视频| 国外色69视频在线观看| 96pao国产成视频永久免费| 美日韩精品视频免费看| 欧美日韩中文字幕在线视频| 国产精品第七十二页| 亚洲美腿欧美激情另类| 中文字幕日韩高清| 91精品国产91久久久久久最新| 亚洲精品理论电影| 亚洲欧美自拍一区| 国产欧美一区二区三区在线看| 中文字幕国产亚洲2019| 欧美日韩国产页| 精品无人区太爽高潮在线播放| 精品中文字幕在线2019| 在线视频日韩精品| 久久精品国产亚洲精品| 精品亚洲男同gayvideo网站| 美女视频久久黄| 国产精品av电影| 亚洲欧美综合精品久久成人| 中文字幕精品—区二区| 日韩不卡中文字幕| 国产午夜精品一区二区三区| 国产综合视频在线观看| 亚洲伊人久久综合| 亚洲缚视频在线观看| 57pao成人国产永久免费| 欧美日韩国产精品一区| 2018中文字幕一区二区三区| 亚洲3p在线观看| 黑人精品xxx一区| 国产在线视频不卡| 国产性猛交xxxx免费看久久| 日本电影亚洲天堂| 久久91亚洲精品中文字幕奶水|