❶ ajax請求的五個步驟
ajax請求的五個步驟:
1.建立XMLHttpRequest對拆毀鎮象。
2.設置回調函數。
3.使用open方法與伺服器建立鏈接。
4.向伺服器發送數據。
5.在回調函數中針對不同的響應狀態進行處理。
Ajax即AsynchronousJavascriptAndXML(非同步JavaScript和XML)在 2005年被Jesse James Garrett提出的新術語,用來描述一種使用現有技術集合的『新』方法。
包括:HTML或XHTML, CSS,JavaScript,DOM, XML,XSLT, 以及最重要的余纖XMLHttpRequest。
使用Ajax技術網頁應用能夠快速地將增量更新呈現在用戶界面上,而不需要重載(刷新)整個頁面,這使得程序能夠更快地回應用戶的操作。
Ajax這個術語源自描述從基於 Web 的應用到基於數據的應用:
Ajax 不是一種新的編程語言,而是一種用於創建更好更快以及交互性更強的Web應用程旅粗序的技術。
使用 JavaScript 向伺服器提出請求並處理響應而不阻塞用戶核心對象XMLHttpRequest。通過這個對象,您的 JavaScript 可在不重載頁面的情況與 Web 伺服器交換數據,即在不需要刷新頁面的情況下,就可以產生局部刷新的效果。
❷ ajax請求的五個步驟是什麼
第1步 創建非同步對象,首先,創建一個XMLHttpRequest非同步對象。
Ajax即AsynchronousJavascriptAndXML(非同步JavaScript和XML)在 2005年被Jesse James Garrett提出的簡歲友新術語,用來描述一種使用現有技術集合的『新』方法。
使用Ajax技術網頁應用能夠快速地將增量更新呈現在用戶界面上,而不需要重載(刷新)整個頁面,這使得程序能夠更快地回應用戶的操作。
Ajax這個術語源自描述從基於 Web 的應用到基於數據的應用。
Ajax 不是一種新的編程語言,而是一種用於創建更好更快以及交互性更強的Web應用程序的技術。
❸ 一分鍾學會什麼是Ajax及Ajax請求的五個步驟
AJAX的意思就是非同步的JavaScript和XML。簡而言之,它是使用XMLHttpRequest對象與伺服器端通信的腳本語言。它可以發送及接收各種格式的信息,包括JSON、XML、HTML和文本文件。AJAX最為吸引人的就是它的「非同步」特性,AJAX可以無需刷新頁面而與伺服器端進行通信。
Ajax請求的五個步驟:
1、建立xmlHttpRequest對象
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
if(xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType("text/xml");
}
} else if(window.ActiveXobject) {
var activeName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for(var i = 0; i < activeName.length; i++) {
try {
xmlHttp = new ActiveXobject(activeName[i]);
break;
} catch(e) {}
}
}
if(!xmlHttp) {
alert("創建xmlhttprequest對象失敗");
} else {}
2、設置回調函數
xmlHttp.onreadystatechange= callback;
function callback(){}
3、使用OPEN方法與伺服器建立連接xmlHttp.open("get","ajax?name="+ name,true)
此步注意設置http的請求方式(post/get),如果是POST方式,注意設置請求頭信息xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
4、向伺服器端發送數據
xmlHttp.send(null);如果是POST方式就不為空
5、在回調函數中針對虧局不同的響應狀態進行處理
if(xmlHttp.readyState == 4){ //判斷交互是否成功
if(xmlHttp.status == 200){ //獲取伺服器返回的數據 銷困讓 //獲取純文本數據
var responseText =xmlHttp.responseText;
document.getElementById("info").innerHTML = responseText;
}
}
(3)ajax用什麼方法使用擴展閱讀:
Ajax優缺點
優點:
1、非同步請求,不妨礙用戶瀏覽頁面或者其他操作。
2、局部刷新,無需重新刷新頁面。
3、界面與應用分離。有利於分工合作、減少非技術人員對頁面的修改造成的WEB應用程序錯誤、提高效率、也更加適用於現在的尺蔽發布系統。
4、基於標准被廣泛支持。
5、前端和後端負載平衡。最大程度的減少冗餘請求和響應對伺服器造成的負擔,提升站點性能。
缺點:
1、back和History,對瀏覽器機制的破壞。
2、安全問題。易受到黑客攻擊。
3、對搜索引擎支持較弱。
4、不能很好支持移動設備。
5、違背URL和資源定位的初衷。
❹ Jquery中常用的AJax的方法有哪幾個
jQuery中ajax的4種常用請求方式:
1.$.ajax()返回其創建的 XMLHttpRequest 對象。
$.ajax() 只有一個參數:參數 key/value 對象,包含各配置及回調函數信息。如果指定了 dataType 選項,請確保伺服器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。
實例:
保存數據到伺服器,成功時顯示信息。
$.ajax({ type: "post", dataType: "html", url: '/Resources/GetList.ashx', data: dataurl, success: function (data) {
if (data != "") {
$("#pager").pager({
pagenumber: pagenumber, pagecount: data.split("$$")[1],
buttonClickCallback: PageClick });
$("#anhtml").html(data.split("$$")[0]);
}
}
});
2.通過遠程 HTTP GET 請求載入信息。
這是一個簡單的 GET 請求功能以取代復雜 $.ajax 。請求成功時可調用回調函數
。如果需要在出錯時執行函數,請使用 $.ajax。 實例:
$.get("test.cgi", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
3. 通過遠程 HTTP POST 請求載入信息。 這是一個簡單的 POST 請求功能以取代復雜 $.ajax 。
請求成功時可調用回調函數。如果需要在出錯時執行函數,請使用 $.ajax。
實例:
$.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames },
function (data) {
if (data == "ok") {
alert("添加成功!");
}
}
)
4.通過 HTTP GET 請求載入 JSON 數據。
實例:
$.getJSON("api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&
jsoncallback=?,前面加上http://", function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
❺ Jquery 中的$ajax方法到底該怎麼用
運用ajax()方法,比其它如load()、get()、post()全局性函數它更多地關注實現過皮碧粗程中的細節;首先要了解其參數列表:
url: 要求為String類型的參數,(默認為當前頁地址)發送請求的地址。
type:要求為String類型的參數,請求方燃鎮式(post或get)默認為get。注意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽器支持。
timeout: 要求為Number類型的參數,設置請求超時時間(毫秒)。此設置將覆蓋$.ajaxSetup()方法的全局設置。
async:要求為Boolean類型的參數,默認設置為true,所有請求均為非同步請求。如果需要發送同步請求,請將此選項設置為false。注意,同步請求將鎖住瀏覽器,用戶其他操作必須等待請求完成才可以執行。
cache:要求為Boolean類型的參數,默認為true(當dataType為script時,默認為false)。設置為false將不會從瀏覽器緩存中載入請求信息。
data: 要求為Object或String類型的參數,發送到伺服器的數據。如果已經不是字元串,將自動轉換為字元串格式。get請求中將附加在url後。防止這種自動轉換,可以查看processData選項。對象必須為key/value格式,例如{foo1:"bar1",foo2:"bar2"}轉換為&foo1=bar1&foo2=bar2。如果是數組,JQuery將自動為不同值對應同一個名稱。例如{foo:["bar1","bar2"]}轉換為&foo=bar1&foo=bar2。
dataType: 要求為String類型的參數,預期伺服器返回的數據類型。如果不指定,JQuery將自動根據http包mime信息返回responseXML或responseText,並作為回調函數參數傳遞。可用的類型如下:
xml:返回XML文檔,可用JQuery處理。
html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。
script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求時(不在同一個域下),所有post請求都將轉為get請求。
json:返回JSON數據。
jsonp:JSONP格式。使用SONP形式調用函數時,例如myurl?callback=?,JQuery將自動替換後一個 「?」為正確的函數名,以執行回調函數。
text:返回純文本字元串。
beforeSend:要求為Function類型的參數,發送請求前可以修改XMLHttpRequest對象的函數,例如添加自定義HTTP頭。在beforeSend中如果返回false可以取消本次ajax請求XMLHttpRequest對象是惟一的參數。
function(XMLHttpRequest){
this; //調用本次ajax請求時傳遞的options參數
}
complete:要求為Function類型的參數,請求完成後調用的回調函數(請求成功或失敗時均調用)。參數:XMLHttpRequest對象和一個描述成功請求類型的字元串。
function(XMLHttpRequest, textStatus){
this; //調用本次ajax請求時傳遞的options參數
}
success:要求為Function類型的參數,請求成功後調用的回調函數,有兩個參數。
(1)由伺服器返回,並根據dataType參數慧告進行處理後的數據。
(2)描述狀態的字元串。
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //調用本次ajax請求時傳遞的options參數
error:要求為Function類型的參數,請求失敗時被調用的函數。該函數有3個參數,即XMLHttpRequest對象、錯誤信息、捕獲的錯誤對象(可選)。
ajax事件函數如下:
function(XMLHttpRequest, textStatus, errorThrown){
//通常情況下textStatus和errorThrown只有其中一個包含信息
this; //調用本次ajax請求時傳遞的options參數
}
contentType:要求為String類型的參數,當發送信息至伺服器時,內容編碼類型默認為"application/x-www-form-urlencoded"。該默認值適合大多數應用場合。
dataFilter:要求為Function類型的參數,給Ajax返回的原始數據進行預處理的函數。提供data和type兩個參數。data是Ajax返回的原始數據,type是調用jQuery.ajax時提供的dataType參數。函數返回的值將由jQuery進一步處理。
function(data, type){
//返回處理後的數據
return data;
}
global:要求為Boolean類型的參數,默認為true。表示是否觸發全局ajax事件。設置為false將不會觸發全局ajax事件,ajaxStart或ajaxStop可用於控制各種ajax事件。
ifModified:要求為Boolean類型的參數,默認為false。僅在伺服器數據改變時獲取新數據。伺服器數據改變判斷的依據是Last-Modified頭信息。默認值是false,即忽略頭信息。
jsonp:要求為String類型的參數,在一個jsonp請求中重寫回調函數的名字。該值用來替代在"callback=?"這種GET或POST請求中URL參數里的"callback"部分,例如{jsonp:'onJsonPLoad'}會導致將"onJsonPLoad=?"傳給伺服器。
username:要求為String類型的參數,用於響應HTTP訪問認證請求的用戶名。
password:要求為String類型的參數,用於響應HTTP訪問認證請求的密碼。
processData:要求為Boolean類型的參數,默認為true。默認情況下,發送的數據將被轉換為對象(從技術角度來講並非字元串)以配合默認內容類型"application/x-www-formurlencoded"。如果要發送DOM樹信息或者其他不希望轉換的信息,請設置為false。
scriptCharset:要求為String類型的參數,只有當請求時dataType為"jsonp"或者"script",並且type是GET時才會用於強制修改字元集(charset)。通常在本地和遠程的內容編碼不同時使用。
❻ ajax請求有哪幾種方式
1. get() 方法通過遠程 HTTP GET 請求載入信息。
// 1.創建
var ajax = new XMLHttpRequest();
// 2設置
ajax.open('get', '01.Ajax_get.php');
// 3.發送
ajax.send();
// 4.狀態事件
ajax.onreadystatechange = function() {
if (ajax.readyState == 4 && ajax.status == 200) {
// 5.使用返回的數據 修改頁面的內容
// responseText 返回的就是一個 字元串
// 我們 在ajax 中 如果 是通過 ajax.responseText 獲取到的 統統都是字元串
console.log(ajax.responseText);
}
2.post() 通過遠程做肆含 HTTP POST 請求載入信息。這是一個簡單的 POST 請求功能以取代復雜的$.ajax().請求成功時可調用回調函數。
//創建ajax實例
var ajax = new XMLHttpRequest();
// 使用post請求
ajax.open('post','ajax_post.php');
// 如雹昌果 使用post發送數據 必須 設置 如下內容
// 修改了 發送給 伺服器的 請求報文的 內容
// 如純笑果需要像 HTML 表單那樣 POST 數據,請使用 setRequestHeader() 來添加 HTTP 頭。然後在 send() 方法中規定您希望發送的數據:
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// 發送
// post請求 發送的數據 寫在 send方法中
// 格式 name=jack&age=18 字元串的格式
ajax.send('name=jack&age=998');
// 注冊事件
ajax.onreadystatechange = function () {
if (ajax.readyState==4&&ajax.status==200) {
console.log(ajax.responseText);
}
}
❼ Ajax怎麼用麻煩說的詳細些
AJAX全稱為「Asynchronous JavaScript and XML」(非同步JavaScript和XML),是指一種創建互動式網頁應用的網頁開發技術。 另外很多人對AJAX讀音為阿甲克斯,正確讀音應該為「ai jian ke si」(漢字拼音,其實應該是ai jai ke si ,但jai在漢字中沒有此拼音) 主要包含了以下幾種技術 Ajax(Asynchronous JavaScript + XML)的定義 基於web標准(standards-based presentation)XHTML+CSS的表示; 使用DOM(Document Object Model)進行動態顯示及交互; 使用XML 和 XSLT 進行數據交換及相關操作; 使用XMLHttpRequest 進行非同步數據查詢、檢索; 使用JavaScript 將所有的東西綁定在一起。英文參見Ajax的提出者Jesse James Garrett的原文,原文題目(Ajax: A New Approach to Web Applications)。 類似於DHTML或LAMP,AJAX不是指一種單一的技術,而是有機地利用了一系列相關的技術。事實上,一些基於AJAX的「派生/合成」式(derivative/composite)的技術正在出現,如「AFLAX」。 AJAX的應用使用支持以上技術的web瀏覽器作為運行平台。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、仔伍Konqueror及Safari。但是Opera不支持XSL格式對象,也不支持XSLT。 基礎應用 創建XMLHttpRequest 方法如下 XMLHttpRequest 類首先由Internet Explorer以ActiveX對象引入,被稱為XMLHTTP。 後來Mozilla﹑Netscape﹑Safari 和其他瀏覽器念掘或也提供了XMLHttpRequest類,不過它們創建散則XMLHttpRequest類的方法不同。 對於Internet Explorer瀏覽器: xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); //3.0或4.0, 5.0 xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP"); xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP"); 由於在不同Internet Explorer瀏覽器中XMLHTTP版本可能不一致,為了更好的兼容不同版本的Internet Explorer瀏覽器,因此我們需要根據不同版本的Internet Explorer瀏覽器來創建XMLHttpRequest類,上面代碼就是根據不同的Internet Explorer瀏覽器創建XMLHttpRequest類的方法。 對於Mozilla﹑Netscape﹑Safari等瀏覽器 創建XMLHttpRequest 方法如下:xmlhttp_request = new XMLHttpRequest(); 如果伺服器的響應沒有XML mime-type header,某些Mozilla瀏覽器可能無法正常工作。 為了解決這個問題,如果伺服器響應的header不是text/xml,可以調用其它方法修改該header。 xmlhttp_request = new XMLHttpRequest(); xmlhttp_request.overrideMimeType('text/xml'); 在實際應用中,為了兼容多種不同版本的瀏覽器,一般將創建XMLHttpRequest類的方法寫成如下形式: try{ if( window.ActiveXObject ){ for( var i = 5; i; i-- ){ try{ if( i == 2 ){ xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" ); } else{ xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" ); xmlhttp_request.setRequestHeader("Content-Type","text/xml"); xmlhttp_request.setRequestHeader("Charset","gb2312"); } break;} catch(e){ xmlhttp_request = false; } } } else if( window.XMLHttpRequest ) { xmlhttp_request = new XMLHttpRequest(); if (xmlhttp_request.overrideMimeType) { xmlhttp_request.overrideMimeType('text/xml'); } } } catch(e){ xmlhttp_request = false; } 發送請求了 可以調用HTTP請求類的open()和send()方法,如下所示: xmlhttp_request.open('GET', URL, true); xmlhttp_request.send(null); open()的第一個參數是HTTP請求方式—GET,POST或任何伺服器所支持的您想調用的方式。 按照HTTP規范,該參數要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求。 第二個參數是請求頁面的URL。 第三個參數設置請求是否為非同步模式。如果是TRUE,JavaScript函數將繼續執行,而不等待伺服器響應。這就是"AJAX"中的"A"。 伺服器的響應 這需要告訴HTTP請求對象用哪一個JavaScript函數處理這個響應。可以將對象的onreadystatechange屬性設置為要使用的JavaScript的函數名,如下所示: xmlhttp_request.onreadystatechange =FunctionName; FunctionName是用JavaScript創建的函數名,注意不要寫成FunctionName(),當然我們也可以直接將JavaScript代碼創建在onreadystatechange之後,例如: xmlhttp_request.onreadystatechange = function(){ // JavaScript代碼段 }; 首先要檢查請求的狀態。只有當一個完整的伺服器響應已經收到了,函數才可以處理該響應。XMLHttpRequest 提供了readyState屬性來對伺服器響應進行判斷。 readyState的取值如下: 0 (未初始化) 1 (正在裝載) 2 (裝載完畢) 3 (交互中) 4 (完成) 所以只有當readyState=4時,一個完整的伺服器響應已經收到了,函數才可以處理該響應。具體代碼如下: if (http_request.readyState == 4) { // 收到完整的伺服器響應 } else { // 沒有收到完整的伺服器響應 } 當readyState=4時,一個完整的伺服器響應已經收到了,接著,函數會檢查HTTP伺服器響應的狀態值。完整的狀態取值可參見W3C文檔。當HTTP伺服器響應的值為200時,表示狀態正常。 處理從伺服器得到的數據 有兩種方式可以得到這些數據: (1) 以文本字元串的方式返回伺服器的響應 (2) 以XMLDocument對象方式返回響應 http://ke..com/view/1641.htm 這里有詳細介紹
❽ tp里的ajax到底怎麼用
thinkphp中使耐神渣用ajax很簡單.主要掌握的地方有三個.
第一.tp中ajax的url需要使用大U方法.比如:$.post("{:U('User/add')}")
瞎羨第二.控制器中返回結果得第一種方法.$this->error('失敗','',true); 第三個參數為true.則發揮的是json數據.包含info.status.url三項.
第三.控制器中返回結果的第二種方法.$this->ajaxReturn(array('customKey1'=>'customValue1','customKey2'=>'customValue2','customKey3'=>'customValue3')).
掌握以上三點和ajax基本使用方法.那麼在tp中使用ajax也就掌握了.簡單的例子如下.偽代碼,或許有錯.
模板中:
1
2
3
4
5
6
7
8
9
10
11
<script>
$.post("{:U('User/add')",{uname:xiaoming,age:15},function(data){
//data接收返回數據
if(data.status == 1){
alert(data.info);
location.href = data.url;
}else{
alert('錯誤');
}
});
</script>
控制器中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public function add(){
if(IS_AJAX){
$name = I('post.name','','trim');
$age = I('post.age','','trim');
if($name && $age){
//插入數據
$this->success('添加成功',U('User/index'),true);
}else{
$this->ajaxReturn(array(
'status' => 0,
'info' => '大爺,您沒輸入名字',
'url' => U('User/add')
));
}
}else{
昌悄return false;
}
}
大概就是這樣子.至於剩下的$.ajax.$.getJson等等都是一樣的道理