第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php和JS之間如何通信?

php和JS之間如何通信?

PHP
慕的地10843 2023-10-01 17:20:25
我是網(wǎng)絡開發(fā)新手,我正在嘗試建立我的第一個網(wǎng)站。我遇到了一些麻煩,因為 Web 開發(fā)依賴于 PHP 和 JS 等多種編程語言,而對我來說最困難的部分是這些語言之間的通信。例如,我正在嘗試創(chuàng)建一個函數(shù)來壓縮文件夾并生成該新存檔的下載鏈接,這可以通過 PHP 輕松完成。但是,當用戶單擊 zip 按鈕時,我還希望顯示一個彈出窗口,告訴用戶在壓縮文件夾時等待,壓縮完成后我想更改彈出窗口上的文本并顯示下載鏈接,這當然需要JS。我嘗試了很多解決方案,但沒有一個對我來說是完美的,而且我覺得這些解決方案又快又臟,這是我不想要的。如果有我不知道的秘密,請告訴我,這樣我終于可以像使用單一語言一樣使用這些語言了。另外,如果您能幫助我解決當前的問題,我將不勝感激。我只是想知道如何構建一個可以調(diào)用顯示彈出窗口的JS函數(shù)的表單,然后調(diào)用PHP Zip_Folder函數(shù),一旦PHP函數(shù)完成,我想在彈出窗口上顯示下載鏈接窗戶。這是我的表單代碼:(它只調(diào)用顯示彈出窗口的javascript函數(shù))<input type = 'button' onclick = 'Show_PopUP(\"Folder_to_zip\")' value = 'Download Folder'>這是Show_PopUP函數(shù)代碼:            function Show_PopUP(folder) {           var e = document.getElementById('Folder_Download_PopUp');           if(e.style.display == 'block')              e.style.display = 'none';           else {              e.style.display = 'block';}}        我已經(jīng)有了壓縮并生成存檔下載鏈接的PHP函數(shù),所以我現(xiàn)在需要的是在顯示彈出窗口后調(diào)用它的方法,以及在彈出窗口上打印一次下載鏈接的方法功能完成。這可能不是最好的方法,因為我是初學者,所以如果您對如何在沒有這種復雜性的情況下完成我的任務有建議,我會非常高興。抱歉,如果我的問題太長,請?zhí)崆案兄x您的幫助。
查看完整描述

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 代碼給我們的響應


您可以將其擴展到其他形式的溝通,如果您有任何疑問,請告訴我


查看完整回答
反對 回復 2023-10-01
  • 1 回答
  • 0 關注
  • 105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號