在開發(fā)網(wǎng)頁應(yīng)用程序時(shí),我們經(jīng)常會(huì)遇到一種情況,就是在使用Ajax技術(shù)發(fā)送請求后,希望關(guān)閉當(dāng)前頁面并跳轉(zhuǎn)到另一個(gè)頁面。這種需求在很多場景下都會(huì)出現(xiàn),比如在提交表單后,將數(shù)據(jù)保存到數(shù)據(jù)庫后跳轉(zhuǎn)到成功頁面。
使用Ajax發(fā)送請求可以在不刷新整個(gè)頁面的情況下向服務(wù)器發(fā)送請求,并通過接收服務(wù)器的響應(yīng)來更新頁面的一部分內(nèi)容。這種技術(shù)的好處是可以提供更加流暢的用戶體驗(yàn),但是默認(rèn)情況下是不會(huì)直接關(guān)閉當(dāng)前頁面并跳轉(zhuǎn)的。
為了達(dá)到我們的目標(biāo),我們可以使用以下Javascript代碼:
$.ajax({ url: "example.php", method: "post", data: {name: "John", age: 30}, success: function(response){ window.location.href = "success.html"; } });
以上代碼是使用jQuery庫的Ajax方法來發(fā)送異步請求。在這個(gè)例子中,我們指定了請求的URL、請求方法和要發(fā)送的數(shù)據(jù)。當(dāng)服務(wù)器響應(yīng)成功后,在success回調(diào)函數(shù)中,我們使用JavaScript的Location對象來跳轉(zhuǎn)到指定的頁面。在這個(gè)例子中,我們將頁面跳轉(zhuǎn)到success.html。
除了使用jQuery庫,我們還可以使用原生的AJAX方法來實(shí)現(xiàn)類似的效果。以下是一個(gè)使用原生JavaScript的AJAX代碼示例:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { window.location.href = "success.html"; } }; xmlhttp.open("POST", "example.php", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("name=John&age=30");
在這個(gè)例子中,我們創(chuàng)建了一個(gè)XMLHttpRequest對象,并定義了onreadystatechange事件處理程序。當(dāng)readyState屬性的值為4且status屬性的值為200時(shí),表示服務(wù)器已成功響應(yīng)并返回結(jié)果。此時(shí)我們可以使用Location對象將頁面跳轉(zhuǎn)到指定的頁面。
總結(jié)來說,通過使用Ajax技術(shù)并結(jié)合JavaScript的Location對象,我們可以實(shí)現(xiàn)在成功響應(yīng)后關(guān)閉當(dāng)前頁面并跳轉(zhuǎn)到另一個(gè)頁面的效果。這種技術(shù)可以提供更好的用戶體驗(yàn),并且常用于表單提交、數(shù)據(jù)保存等場景中。