1 回答

TA貢獻1799條經(jīng)驗 獲得超8個贊
您需要做的是使用這些稱為 XHR 或 XMLHttpRequest(Google it)的東西,從 JavaScript 到 php,這基本上有點像一個隱形瀏覽器,在幕后進入 php 頁面并“加載”任何 php 頁面返回,只有這一切都發(fā)生在 JavaScript 本身內(nèi),因此您可以讀取這個來自 php 的“不可見頁面”加載,并對其進行操作,而無需實際刷新頁面。這個過程稱為 AJAX(查找)
你可以做的是,當你設置這個“不可見頁面”時,你還可以發(fā)送 php 頁面可以讀取的某些類型的信息,完成后,php 頁面可以將某些內(nèi)容回顯給不可見頁面,然后可以用 JavaScript 讀取。您可以輕松地在 php 和 JavaScript 之間進行通信,方法是在 JavaScript 中發(fā)送某些值以及這個不可見的頁面,然后等待 php 回顯某些內(nèi)容,然后使用 JavaScript 讀取該值
那么我們實際上如何做到這一點呢?
首先在 JavaScript 方面,我們需要制作這個“不可見頁面”,從技術上講,它實際上不是一個頁面,它只是執(zhí)行與顯示任何其他網(wǎng)頁相同的正常操作,這在技術上稱為“請求”,因為這就像向服務器詢問一些數(shù)據(jù),它基本上是“請求”它,然后當服務器回顯某些數(shù)據(jù)時,這就是所謂的“響應”所請求的內(nèi)容
因此,要在 JavaScript 中發(fā)出這個新請求,我們可以執(zhí)行以下操作
var asking= new XMLHttpRequest ()
現(xiàn)在就好像創(chuàng)建了一個不可見頁面,但尚未導航到任何內(nèi)容,但我們現(xiàn)在必須隱喻地“輸入 URL”到這個不可見頁面(尚未實際“導航”到它)才能做到這一點
asking.open("GET", "pathToPHPpage.php?hi=there")
因此,第一部分稱為“GET”,因為我們只想簡單地獲取響應,而不實際發(fā)送任何內(nèi)容(如果我們發(fā)送文件,我們將使用“POST”,然后將文件日期放入下一步),然后我們輸入您想要獲取的 php 頁面的 URL。如果它與 JavaScript 頁面相同,只需放置 location.href 即可,但至少在 URL 末尾添加一些內(nèi)容很重要,請注意“?hi=there”,您可以將其稱為任何名稱,但重要的是緊跟在 .php 頁面后面的問號,然后是某個東西的名稱(在本例中為“hi”),后面跟著它的值(在本例中為“there”),因為 php 頁面能夠讀取該內(nèi)容,并給出不同的值根據(jù)它所說的內(nèi)容做出回應
好的,現(xiàn)在我們必須實際將該請求“發(fā)送”到服務器,這就像隱喻地“導航”到不可見頁面上的 URL 一樣
asking.send()
(如果你把“POST”放在前面,你可以在括號之間添加你想要發(fā)送的日期,通常是字符串的形式,但根據(jù)數(shù)據(jù)的不同它可能會有所不同,查找它以獲取更多參考)
現(xiàn)在,在我們繼續(xù) JS 方面之前,讓我們快速切換到 PHP(但不必按照這個順序)來看看發(fā)生了什么。我們需要監(jiān)聽 php 頁面上包含名稱的任何“請求” “hi”(因為這是我們之前在 URL 末尾的內(nèi)容),為了做到這一點,在 PHP 的頂部(技術上在 php 中的任何地方)我們做
$isHi = $_GET["hi"];
if(isset ($isHi)) {
//Do some php code
echo "hi back!".$isHi;
}
基本上,我們只是在發(fā)送到 PHP 的“GET”請求中查找“*hi”名稱,我們檢查它是否為“set”,即不為空,然后我們將一些消息回顯給 JS,現(xiàn)在讓我們監(jiān)聽該消息在 JavaScript 方面
回到 JS,在 .send 行之后(或之前),我們需要監(jiān)聽頁面何時回顯。
為此,我們檢查它是否成功加載,因為有時可能會出現(xiàn)錯誤,所以讓我們這樣做
asking.onreadstatechange= function () {
if(asking.readyState == 4 && asking.status==200) {
alert(asking.responseText)
} else alert("ooh something happened")
}
現(xiàn)在我們可以訪問 php 代碼給我們的響應
您可以將其擴展到其他形式的溝通,如果您有任何疑問,請告訴我
- 1 回答
- 0 關注
- 105 瀏覽
添加回答
舉報