摘要:原生操作異步請(qǐng)求第一步創(chuàng)建對(duì)象判斷用戶的瀏覽器類型,決定使用何種方式對(duì)象感知狀態(tài),當(dāng)狀態(tài)改變是會(huì)觸發(fā)事件當(dāng)前狀態(tài)為時(shí),數(shù)據(jù)接收完畢輸出響應(yīng)信息設(shè)置傳遞的信息小明處理中文亂碼第二步創(chuàng)建一個(gè)請(qǐng)求,并設(shè)置請(qǐng)求地址及異步請(qǐng)求方式第三步發(fā)送請(qǐng)求異步請(qǐng)
原生ajax操作
JavaScript 異步 GET請(qǐng)求
// 第一步:創(chuàng)建ajax對(duì)象 //判斷用戶的瀏覽器類型,決定使用何種方式ajax對(duì)象 if (typeof ActiveXObject != "undefined") { var version = [ "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ]; for (var i = 0; i <= version.length; i++) { try { var obj = new ActiveXObject(version[i]); if (typeof obj != "undefined") { break; } } catch(ex) { } } } else { var obj = new XMLHttpRequest(); } // 感知ajax狀態(tài),當(dāng)ajax狀態(tài)改變是會(huì)觸發(fā)事件onreadystatechange obj.onreadystatechange = function(){ // 當(dāng)前狀態(tài)為4時(shí),數(shù)據(jù)接收完畢 if (obj.readyState == 4 && obj.status == 200) { // 輸出響應(yīng)信息 alert(obj.responseText); } } // 設(shè)置GET傳遞的信息 var name = "小明"; // 處理中文亂碼 name = encodeURIComponent(name); // 第二步:創(chuàng)建一個(gè)HTTP請(qǐng)求,并設(shè)置"請(qǐng)求地址"及異步請(qǐng)求方式 obj.open("get", "./test.php?fname=" + name + "&addr=beijing", true); // 第三步:發(fā)送請(qǐng)求 obj.send();
JavaScript 異步 POST請(qǐng)求
// 創(chuàng)建Ajax對(duì)象 //判斷用戶的瀏覽器類型,決定使用何種方式ajax對(duì)象 if (typeof ActiveXObject != "undefined") { var version = [ "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ]; for (var i = 0; i <= version.length; i++) { try { var obj = new ActiveXObject(version[i]); if (typeof obj != "undefined") { break; } } catch(ex) { } } } else { var obj = new XMLHttpRequest(); } // 感知Ajax狀態(tài),當(dāng)Ajax狀態(tài)改變時(shí)會(huì)觸發(fā)事件onreadystatechange obj.onreadystatechange = function(){ // 當(dāng)前狀態(tài)為4時(shí),數(shù)據(jù)接收完畢 if (obj.readyState == 4 && obj.status == 200) { // 輸出響應(yīng)信息 alert(obj.responseText); } } // 創(chuàng)建一個(gè)http請(qǐng)求,并設(shè)置“請(qǐng)求地址”及異步請(qǐng)求方式 obj.open("post", "./test.php"); // 設(shè)置HTTP頭協(xié)議信息 obj.setRequestHeader("content-type", "application/x-www-form-urlencoded"); var info = "fname=" + "小明" + "&addr=beijing"; // 發(fā)送請(qǐng)求 obj.send(info);
jQuery-ajax操作自行下載并引入jquery:
jQuery 異步 GET請(qǐng)求
// 1.直接請(qǐng)求 // $(function(){ // $.ajax("./test.php", { // data:{name:"tom",age:23}, // success:function(msg){ // alert(msg); // } // }); // }); // 2.配置setting參數(shù)請(qǐng)求 // $(function(){ // $.ajax({ // type:"GET", // url:"./test.php", // data:{name:"tom", age:23}, // success:function(msg){ // alert(msg); // } // }); // }); // 3.通過(guò)$.ajaxSetup()方法預(yù)先設(shè)置全局參數(shù) // $(function(){ // // 預(yù)先設(shè)置全局參數(shù) // $.ajaxSetup({ // type:"GET", // url:"./test.php", // data:{name:"tom",age:23}, // success:function(msg){ // alert(msg); // } // }); // // 執(zhí)行ajax操作,使用全局函數(shù) // $.ajax(); // }); // 4.利用$.get()方法請(qǐng)求 //只發(fā)送get請(qǐng)求 // $(function(){ // $.get("./test.php"); // }); // 發(fā)送get請(qǐng)求并接受返回結(jié)果 // $(function(){ // $.get("./test.php", function(msg){ // alert(msg); // }); // }); // 發(fā)送請(qǐng)求并傳遞數(shù)據(jù) // $(function(){ // $.get("./test.php", {name:"tom",age:23}, function(msg){ // alert(msg); // }); // }); // 發(fā)送get請(qǐng)求并傳遞數(shù)據(jù),接受返回結(jié)果,顯示返回格式 // $(function(){ // $.get("./test.php", {name:"tom",age:23}, function(msg){ // alert(msg.name + " " + msg.age); // }, "json"); // }); // 使用$.getJSON()可以實(shí)現(xiàn)同樣的功能 $.getJSON("./test.php", {name:"tom", age:23}, function(msg){ alert(msg.name + " " + msg.age); });
jQuery 異步 POST請(qǐng)求
jquery-ajax發(fā)送post請(qǐng)求 Ajax無(wú)刷新評(píng)論
jQuery-ajax&php跨域請(qǐng)求問(wèn)題
第一種方法JSONP
注意:JSONP只支持get請(qǐng)求
1.首先在jquery-ajax配置參數(shù)中添加這兩項(xiàng)dataType: "jsonp", jsonp: "callback",
例如
$.ajax({ type: "GET", url: "http://127.0.0.1/ajax2/serverjsonp.php?number=" + $("#keyword").val(), dataType: "jsonp", jsonp: "callback", success: function(data) { if (data.success) { $("#searchResult").html(data.msg); } else { $("#searchResult").html("出現(xiàn)錯(cuò)誤:" + data.msg); } }, error: function(jqXHR){ alert("發(fā)生錯(cuò)誤:" + jqXHR.status); }, });2.然后,在php中做修改
$jsonp = $_GET["callback"]; echo $jsonp . "({"success":false,"msg":"參數(shù)錯(cuò)誤"})"; //輸出的字符串前面要拼接上jsonp
第二種方法XHR2
注意:其他瀏覽器都支持,但是IE必須得IE10以上,只需要服務(wù)端接口加上以下頭信息
header("Access-Control-Allow-Origin:*"); //允許所有訪問(wèn) header("Access-Control-Allow-Origin", "http://my.domain.cn:8080"); //只允許特定域名訪問(wèn) header("Access-Control-Allow-Methods:POST,GET"); //允許跨域請(qǐng)求的方法,可以做限定 header("Access-Control-Allow-Credentials:true"); //請(qǐng)求的時(shí)候是否帶上cookie信息
JavaScript-ajax請(qǐng)求xml數(shù)據(jù)
xml示例
wendy 35 Santa Fe Yaphet 32 Balchik Isaiah 35 Caldera
js示例
Ajax獲取XML信息 Ajax獲取XML信息
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99559.html
摘要:在接收響應(yīng)期間持續(xù)不斷地觸發(fā)。在請(qǐng)求發(fā)生錯(cuò)誤時(shí)觸發(fā)。在通信完成或者觸發(fā)或事件后觸發(fā)。已經(jīng)接收到部分響應(yīng)數(shù)據(jù)?;跇?biāo)準(zhǔn)被廣泛支持。破壞程序的異常處理機(jī)制。 原文(我的GitHub):https://github.com/liangfengbo/frontend-ability/issues/1 學(xué)習(xí)大綱 理解Ajax的工作原理 Ajax核心-XMLHttpRequest對(duì)象 封裝Aja...
摘要:而由于安全風(fēng)險(xiǎn)的原因,被禁止使用。就好比單線程一樣,請(qǐng)求發(fā)出后就進(jìn)入阻塞狀態(tài),直到解除阻塞,余下的代碼才會(huì)繼續(xù)執(zhí)行。安全問(wèn)題暴露了與服務(wù)器交互的細(xì)節(jié)。破壞了程序的異常機(jī)制。服務(wù)器端暫時(shí)無(wú)法處理請(qǐng)求可能是過(guò)載或維護(hù)。 AJAX全稱Asynchronous JavaScript and XML(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開發(fā)技術(shù)。它有機(jī)地包含了以下...
摘要:常見面試題什么是,為什么要使用是的縮寫。該對(duì)象在中首次引入,它是一種支持異步請(qǐng)求的技術(shù)。頭信息已經(jīng)接收,響應(yīng)數(shù)據(jù)尚未接收。同源策略是客戶端腳本尤其是的重要的安全度量標(biāo)準(zhǔn)。這樣頁(yè)面的所有都會(huì)執(zhí)行這條語(yǔ)句就是不需要保存緩存記錄。 AJAX常見面試題 什么是AJAX,為什么要使用Ajax AJAX是Asynchronous JavaScript and XML的縮寫。他是指一種創(chuàng)建交互式網(wǎng)頁(yè)...
摘要:一個(gè)沒(méi)有返回值的函數(shù)執(zhí)行的效果其實(shí)是利用它的副作用一個(gè)沒(méi)有返回值和利用副作用的函數(shù)其實(shí)就是一個(gè)黑洞。 本篇博客尚未上傳 github github 首頁(yè)(star+watch,一手動(dòng)態(tài)直達(dá)): https://github.com/HCThink/h-blog 掘金 link , 掘金 專欄 segmentfault 主頁(yè) 原創(chuàng)禁止私自轉(zhuǎn)載 異步處理方案系列- 1.call...
摘要:事件循環(huán)事件循環(huán)是指主線程重復(fù)從消息隊(duì)列中取消息執(zhí)行的過(guò)程。事件觸發(fā)時(shí),表示異步任務(wù)完成,會(huì)將事件監(jiān)聽器函數(shù)封裝成一條消息放到消息隊(duì)列中,等待主線程執(zhí)行。 一. 單線程 我們常說(shuō)JavaScript是單線程的。 所謂單線程,是指在JS引擎中負(fù)責(zé)解釋和執(zhí)行JavaScript代碼的線程只有一個(gè)。不妨叫它主線程。 但是實(shí)際上還存在其他的線程。例如:處理AJAX請(qǐng)求的線程、處理DOM事件的線...
摘要:例如處理請(qǐng)求的線程處理事件的線程定時(shí)器線程讀寫文件的線程例如在中等等。事件循環(huán)事件循環(huán)是指主線程重復(fù)從消息隊(duì)列中取消息執(zhí)行的過(guò)程。事件觸發(fā)時(shí),表示異步任務(wù)完成,會(huì)將事件監(jiān)聽器函數(shù)封裝成一條消息放到消息隊(duì)列中,等待主線程執(zhí)行。 一. 單線程 我們常說(shuō)JavaScript是單線程的。 所謂單線程,是指在JS引擎中負(fù)責(zé)解釋和執(zhí)行JavaScript代碼的線程只有一個(gè)。不妨叫它主線程。 但是實(shí)...
閱讀 1448·2021-11-25 09:43
閱讀 2306·2021-09-27 13:36
閱讀 1154·2021-09-04 16:40
閱讀 2025·2019-08-30 11:12
閱讀 3351·2019-08-29 14:14
閱讀 615·2019-08-28 17:56
閱讀 1387·2019-08-26 13:50
閱讀 1304·2019-08-26 13:29