国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
鑰匙要點
在本文的其餘部分中,我想調查對Vanilla JavaScript中Ajax API的改進??梢栽赪3C上找到整個規(guī)範。令我驚訝的是這個規(guī)範。它不再是“ xmlhttprequest級別2”,而是“ xmlhttprequest級別1”,這是兩個規(guī)格之間2011年合併的結果。展望未來,它將從標準的角度將其視為一個實體,而生活水平將被稱為XMLHTTPREQUEST。這表明社區(qū)有承諾堅持一個標準,這對於想要擺脫jQuery的開發(fā)人員而言,這只會意味著好消息。
html看起來不錯又整潔。如您所見,所有的興奮都在JavaScript中發(fā)生。
這就是響應的樣子:
如何使用vanilla javaScript?

var xhr = new xmlhttprequest(); xhr.open(“ get”,'https://api.example.com/data',true) xhr. onreadystatechange = function(){
if(xhr.readystate == 4 && xhr.status ===== 200)
console.log(json.parse(xhr.responseText));
}
xhr.send();
>

>我如何處理香草ajax中的錯誤?可以使用XMLHTTPREQUEST對象的OnError事件處理程序完成

var xhr = new xmlhttpRequest();

xhr.open(“ get”,'https://api.example.com/data',true) 。失敗的“);

>是的,但是不建議這樣做,因為它可以阻止腳本的執(zhí)行並使您的網(wǎng)頁無反應互動,但不建議這樣做。 。要提出同步請求,請將false作為第三個參數(shù)傳遞到打開的方法。
首頁 web前端 js教程 沒有jQuery的香草·阿賈克斯的指南

沒有jQuery的香草·阿賈克斯的指南

Feb 19, 2025 am 11:58 AM

沒有jQuery的香草·阿賈克斯的指南

鑰匙要點

    ajax,用於異步JavaScript和XML的縮寫,允許部分頁面更新,減少了整頁刷新的需求,並啟用了更多流暢的用戶體驗。 AJAX請求的基本解剖結構涉及為HTTP請求創(chuàng)建所需類的實例,指定HTTP請求方法和頁面的URL並發(fā)送請求。
  • 雖然jQuery可以簡化AJAX請求,但並非總是必要的。 Vanilla JavaScript中的Ajax API經歷了重大改進,從標準角度來看,XMLHTTPreQuest規(guī)範現(xiàn)在被視為一個單一實體,表明社區(qū)承諾堅持一個標準。 Ajax是異步JavaScript和XML的簡短,AJAX是一種進行部分頁面更新的機制。它使您能夠使用來自服務器的數(shù)據(jù)更新頁面的部分,同時避免需要進行完整的刷新。以這種方式進行部分更新可以有效地創(chuàng)建流體用戶體驗,並且可以減少服務器上的負載。
  • 這是基本Ajax請求的解剖學:
>在這裡,我們正在創(chuàng)建所需類的實例,以向服務器提出HTTP請求。然後,我們調用其開放方法,將HTTP請求方法指定為第一個參數(shù),以及我們要求的頁面的URL。最後,我們將其發(fā)送方法稱為NULL作為參數(shù)。如果在請求後(在這裡我們使用的是GET),則此參數(shù)應包含我們要發(fā)送請求的任何數(shù)據(jù)。

>這就是我們處理服務器的響應的方式:

>

var xhr = new XMLHttpRequest();
xhr.open('GET', 'send-ajax-data.php');
xhr.send(null);
> onreadystatechange是異步的,這意味著它隨時被調用。這些類型的功能是回調 - 一旦處理完成後,它就會被調用。在這種情況下,處理器正在服務器上進行。

>

對於那些希望更多地了解Ajax基礎知識的人,MDN網(wǎng)絡有一個很好的指南。

到jQuery還是不jQuery?

> 因此,好消息是上述代碼將在所有最新的主要瀏覽器中起作用。壞消息是,它非常令人費解。好!我已經在尋找優(yōu)雅的解決方案。
xhr.onreadystatechange = function () {
  var DONE = 4; // readyState 4 means the request is done.
  var OK = 200; // status 200 is a successful return.
  if (xhr.readyState === DONE) {
    if (xhr.status === OK) {
      console.log(xhr.responseText); // 'This is the returned text.'
    } else {
      console.log('Error: ' + xhr.status); // An error occurred during the request.
    }
  }
};
>

使用jQuery,可以將整個片段濃縮為:>

這很好。確實,對於包括您在內的許多人來說,JQuery在Ajax方面已成為事實上的標準。但是,你知道嗎?不必是這樣。存在jQuery來繞過醜陋的DOM API。但是,真的是

醜陋的嗎?還是難以理解?

在本文的其餘部分中,我想調查對Vanilla JavaScript中Ajax API的改進??梢栽赪3C上找到整個規(guī)範。令我驚訝的是這個規(guī)範。它不再是“ xmlhttprequest級別2”,而是“ xmlhttprequest級別1”,這是兩個規(guī)格之間2011年合併的結果。展望未來,它將從標準的角度將其視為一個實體,而生活水平將被稱為XMLHTTPREQUEST。這表明社區(qū)有承諾堅持一個標準,這對於想要擺脫jQuery的開發(fā)人員而言,這只會意味著好消息。

>

所以讓我們開始吧……

>

>設置

在本文中,我在後端使用node.js。是的,瀏覽器和服務器上將有JavaScript。 Node.js後端很精美,我鼓勵您在Github上下載整個演示並跟隨。這是服務器上的肉和土豆:

>

這將檢查請求URL,以確定應用程序應如何響應。如果請求來自腳本目錄,則將適當?shù)奈募c應用程序/JavaScript的內容類型一起提供。否則,如果已將請求的X重新抽出標題設置為XMLHTTPRequest,那麼我們知道我們正在處理AJAX請求,並且可以做出適當?shù)捻憫?。如果沒有這樣的情況,則提供文件視圖/index.html。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'send-ajax-data.php');
xhr.send(null);
>我將在我們潛入服務器中的AJAX響應中,擴展評論的部分。在node.js中,我不得不對渲染和httphandler進行一些重彈性:

渲染函數(shù)異步讀取所請求的文件的內容。它通過對HTTPhandler函數(shù)的引用,然後將其作為回調執(zhí)行。 httphandler函數(shù)檢查是否存在錯誤對象(例如,如果無法打開所請求的文件)。提供一切都很好,然後使用適當?shù)腍TTP狀態(tài)代碼和內容類型為文件的內容提供服務。

>
xhr.onreadystatechange = function () {
  var DONE = 4; // readyState 4 means the request is done.
  var OK = 200; // status 200 is a successful return.
  if (xhr.readyState === DONE) {
    if (xhr.status === OK) {
      console.log(xhr.responseText); // 'This is the returned text.'
    } else {
      console.log('Error: ' + xhr.status); // An error occurred during the request.
    }
  }
};
測試API

喜歡使用任何聲音後端API,讓我們編寫一些單元測試以確保其有效。對於這些測試,我正在呼籲Supertest和Mocha尋求幫助:>

這些確保我們的應用程序以正確的內容類型和HTTP狀態(tài)代碼響應不同的請求。安裝了依賴項後,您可以使用NPM測試從命令中運行這些測試。

接口
$.ajax({
  url: 'send-ajax-data.php',
})
.done(function(res) {
  console.log(res);
})
.fail(function(err) {
  console.log('Error: ' + err.status);
});

現(xiàn)在,讓我們看一下我們在html中構建的用戶界面:

html看起來不錯又整潔。如您所見,所有的興奮都在JavaScript中發(fā)生。

> >如果您瀏覽任何規(guī)範的Ajax書,您可能會發(fā)現(xiàn)到處都有現(xiàn)有狀態(tài)。此回調功能帶有嵌套的IF和許多絨毛,這使得很難記住頭頂。讓我們將現(xiàn)有狀態(tài)和on載事件直接放在頭上。

>

var xhr = new XMLHttpRequest();
xhr.open('GET', 'send-ajax-data.php');
xhr.send(null);
這是控制臺中的輸出:

沒有jQuery的香草·阿賈克斯的指南 成功

時,Onload事件才會發(fā)射。因此,Onload事件是您可以在幾秒鐘內充分利用的現(xiàn)代API?,F(xiàn)有的事件將有向後兼容。但是,Onload事件應該是您選擇的工具。 Onload事件看起來像是JQuery上的成功回調,不是嗎? 是時候將5磅的啞鈴放在一邊,然後移動到手臂捲髮了。

>設置請求標頭

jQuery設置封面下的請求標頭,因此您的後端技術知道這是AJAX請求。通常,後端不在乎get請求只要發(fā)送適當?shù)捻憫纯傻竭_何處。當您想使用相同的Web API支持Ajax和HTML時,這很方便。因此,讓我們看一下如何在Vanilla Ajax中設置請求標題:>

>這樣,我們可以在Node.js中進行檢查:

如您所見,Vanilla Ajax是靈活而現(xiàn)代的前端API。您可以使用請求標題有很多想法,其中之一是版本化。因此,例如,假設我想支持此Web API的多個版本。這很有用,因為當我不想打破URL並提供一種機制,客戶可以選擇他們想要的版本。我們可以這樣設置請求標頭:

xhr.onreadystatechange = function () {
  var DONE = 4; // readyState 4 means the request is done.
  var OK = 200; // status 200 is a successful return.
  if (xhr.readyState === DONE) {
    if (xhr.status === OK) {
      console.log(xhr.responseText); // 'This is the returned text.'
    } else {
      console.log('Error: ' + xhr.status); // An error occurred during the request.
    }
  }
};
在後端,請嘗試:

>

$.ajax({
  url: 'send-ajax-data.php',
})
.done(function(res) {
  console.log(res);
})
.fail(function(err) {
  console.log('Error: ' + err.status);
});
>我們在家中,沒有汗水!您可能想知道,關於Ajax還有什麼要知道的?好幾個整潔的技巧。

>

響應類型
// app.js
var app = http.createServer(function (req, res) {
  if (req.url.indexOf('/scripts/') >= 0) {
    render(req.url.slice(1), 'application/javascript', httpHandler);
  } else if (req.headers['x-requested-with'] === 'XMLHttpRequest') {
    // Send Ajax response
  } else {
    render('views/index.html', 'text/html', httpHandler);
  }
});

>您可能想知道,當我與之合作時,為什麼ResponseText包含服務器響應,這就是普通的舊json。事實證明,這是因為我沒有設置適當?shù)闹匦露ㄐ?。此AJAX屬性非常適合告訴前端API對服務器對期望的響應類型。因此,讓我們充分利用它:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'send-ajax-data.php');
xhr.send(null);
很棒的,我可以告訴API的期望,而不必退回純文本,而不得不將其解析為JSON。幾乎所有最新的主要瀏覽器都可以使用此功能。當然,jQuery會自動進行這種類型的轉換。但是,我們現(xiàn)在有一種方便的方式在普通的JavaScript中做同樣的事情,這不是很棒嗎? Vanilla Ajax對許多其他響應類型都有支持,包括XML。 可悲的是,在Internet Explorer中,這個故事並不那麼出色。截至IE 11,該團隊尚未增加對Xhr.ResponseType ='json'的支持。此功能將到達Microsoft Edge。但是,截至撰寫本文時,該錯誤已經近兩年了。我的猜測是微軟的人們一直在努力改造瀏覽器。希望我們希望Microsoft Edge(又名Spartan項目)能兌現(xiàn)其承諾。

a,如果您必須解決這個問題:

>

>緩存破壞

>人們傾向於忘記的一個瀏覽器功能是緩存AJAX請求的能力。例如,Internet Explorer默認情況下會這樣做。我曾經掙扎著幾個小時,試圖弄清為什麼我的Ajax因此因此而無法工作。幸運的是,JQuery默認情況下會破壞瀏覽器緩存。好吧,您也可以在普通的ajax中,這很簡單:
xhr.onreadystatechange = function () {
  var DONE = 4; // readyState 4 means the request is done.
  var OK = 200; // status 200 is a successful return.
  if (xhr.readyState === DONE) {
    if (xhr.status === OK) {
      console.log(xhr.responseText); // 'This is the returned text.'
    } else {
      console.log('Error: ' + xhr.status); // An error occurred during the request.
    }
  }
};
>

根據(jù)jQuery文檔,它所做的只是將時間戳查詢字符串附加到請求的末尾。這使請求有些獨特,並破壞了瀏覽器緩存。發(fā)射http ajax請求時,您可以看到這是什麼樣子:

$.ajax({
  url: 'send-ajax-data.php',
})
.done(function(res) {
  console.log(res);
})
.fail(function(err) {
  console.log('Error: ' + err.status);
});
tada!一切都沒有戲劇。

結論

沒有jQuery的香草·阿賈克斯的指南>希望您喜歡300磅的臥推香草·阿賈克斯(Vanilla Ajax)。一段時間以來,阿賈克斯是一個可怕的野獸,但不再是。實際上,我們涵蓋了Ajax的所有基礎知識,而沒有拐杖,sha骨,jQuery。

我會以簡潔的方式給您打電話:

>

這就是響應的樣子:

別忘了,您可以在Github上找到整個演示。我歡迎您在評論中聽到和沒有jQuery的想法。
// app.js
var app = http.createServer(function (req, res) {
  if (req.url.indexOf('/scripts/') >= 0) {
    render(req.url.slice(1), 'application/javascript', httpHandler);
  } else if (req.headers['x-requested-with'] === 'XMLHttpRequest') {
    // Send Ajax response
  } else {
    render('views/index.html', 'text/html', httpHandler);
  }
});
>

在沒有jQuery

的香草ajax上的常見問題(常見問題解答) 沒有jQuery的香草·阿賈克斯的指南

vanilla ajax是指使用本機JavaScript創(chuàng)建異步的Web應用程序,而無需依靠JQuery庫。儘管JQuery Ajax提供了一種簡化的跨瀏覽器兼容方法來處理Ajax,但Vanilla Ajax可以使您對基礎過程有更多的控制和理解。如果您想減少諸如JQuery之類的外部庫的依賴關係。

>,這也是一個不錯的選擇。

如何使用vanilla javaScript?

var xhr = new xmlhttprequest(); xhr.open(“ get”,'https://api.example.com/data',true) xhr. onreadystatechange = function(){
if(xhr.readystate == 4 && xhr.status ===== 200)
console.log(json.parse(xhr.responseText));
}
xhr.send();
>

>我如何處理香草ajax中的錯誤?可以使用XMLHTTPREQUEST對象的OnError事件處理程序完成

var xhr = new xmlhttpRequest();

xhr.open(“ get”,'https://api.example.com/data',true) 。失敗的“);

};

xhr.send();
var xhr = new xmlhttprequest(); xhr.open(“ post”,'https://api.example.com/data',true) .setRequestheader(“ content-type”, “ application/json”);
xhr.send(json.stringify({key:“ value”}));

如何在Vanilla Javascript中取消AJAX請求? >您可以通過調用xmlhttprequest對象的中止方法來取消AJAX請求。這將立即終止請求。

>我可以使用vanilla javascript?

>是的,但是不建議這樣做,因為它可以阻止腳本的執(zhí)行並使您的網(wǎng)頁無反應互動,但不建議這樣做。 。要提出同步請求,請將false作為第三個參數(shù)傳遞到打開的方法。

>

>如何監(jiān)視AJAX請求的進度?

您可以使用AJAX請求的進度來監(jiān)視AJAX請求的進度XMLHTTPREQUEST對象的OnProgress事件處理程序。此事件是多次觸發(fā)的,提供了當前的進度信息。

>我可以與其他JavaScript庫或框架一起使用Vanilla Ajax? 。這是本機JavaScript功能,不依賴任何外部庫。

>所有現(xiàn)代瀏覽器都支持

以上是沒有jQuery的香草·阿賈克斯的指南的詳細內容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用於不同的應用場景。 Java用於大型企業(yè)和移動應用開發(fā),而JavaScript主要用於網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對像有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

為什麼要將標籤放在的底部? 為什麼要將標籤放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

什麼是在DOM中冒泡和捕獲的事件? 什麼是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標元素,冒泡是從目標元素向上傳播到頂層。 1.事件捕獲通過addEventListener的useCapture參數(shù)設為true實現(xiàn);2.事件冒泡是默認行為,useCapture設為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委託,提高動態(tài)內容處理效率;5.捕獲可用於提前攔截事件,如日誌記錄或錯誤處理。了解這兩個階段有助於精確控制JavaScript響應用戶操作的時機和方式。

JavaScript:探索用於高效編碼的數(shù)據(jù)類型 JavaScript:探索用於高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

如何減少JavaScript應用程序的有效載荷大?。? />
								</a>
								<a href=如何減少JavaScript應用程序的有效載荷大??? Jun 26, 2025 am 12:54 AM

如果JavaScript應用加載慢、性能差,問題往往出在payload太大,解決方法包括:1.使用代碼拆分(CodeSplitting),通過React.lazy()或構建工具將大bundle拆分為多個小文件,按需加載以減少首次下載量;2.移除未使用的代碼(TreeShaking),利用ES6模塊機制清除“死代碼”,確保引入的庫支持該特性;3.壓縮和合併資源文件,啟用Gzip/Brotli和Terser壓縮JS,合理合併文件並優(yōu)化靜態(tài)資源;4.替換重型依賴,選用輕量級庫如day.js、fetch

See all articles