這篇文章適合前後端協同開發經驗不足的新手閱讀。
HTML賦值
輸出到 Element 的 value 或 data-name
<input type="hidden" value="<?php echo $user_avatar;?>" /> <div data-value="<?php echo $user_avatar;?>"></div>
渲染結果
<input type="hidden" value="https://avatars1.githubusercontent.com/u/3949015?v=3&s=40" /> <div data-avatar="https://avatars1.githubusercontent.com/u/3949015?v=3&s=40"></div>
使用 JS 取得
$('input').val(); // http://jquery.bootcss.com/jQuery.data/ $('div').data('avatar');
優點:
不佔用全域變量,由 JS 自由取得。
使用建議:
適合傳遞簡單數據,也非常適合多個簡單數據與 Element 綁定關係。
<ul> <li>nimojs <span data-userid="1" >删除</span></li> <li>nimo22 <span data-userid="2" >删除</span></li> <li>nimo33 <span data-userid="3" >删除</span></li> <li>nimo44 <span data-userid="4" >删除</span></li> <li>nimo55 <span data-userid="5" >删除</span></li> </ul> <script> $('span').on('click',function(){ $.post('/ajax/remove/',$(this).data('userid'),function(data){ // ... }) }) </script>
JS賦值
將資料填入 <script> 的 JavaScript 變數宣告中。 </script>
<script> var user_avatar = "<?php echo $user_avatar;?>"; // 渲染结果 // var user_avatar = "https://avatars1.githubusercontent.com/u/3949015?v=3&s=40"; </script>
或使用 Smarty 後端模板引擎:
<script><br /> var user_avatar = "{$user_avatar}";<br /> </script>
優點:
傳遞資料非常方便。前端直接呼叫 user_avatar 變數使用資料。
缺點:
為了傳遞一個字串資料佔用了全域變數 user_avatar,當有很多資料需要傳輸時則會佔用很多全域變數。
如果傳回資料存在換行將會導致JS報錯
// 渲染结果有换行符 var user_id = "https://avatars1.githubusercontent.com/u/3949015?v=3&s=40"; // Uncaught SyntaxError: Unexpected token ILLEGAL
最佳化:
可以透過指向的某一個變數來存放所有後端回傳的內容,最小程度佔用全域變數。例:
// PHP 代码 var SERVER_DATA = { username: {$username}, userid: {$userid}, title: {$title} } // 渲染结果 var SERVER_DATA = { username: "NimoChu", userid: 1, title: 'F2E' }
使用建議:
需要最快速度傳遞資料給 JS 並且十分確定此資料穩定時,使用此方式。資料格式複雜的建議使用script填入JSON 或AJAX來取得JSON 方法。
script填充JSON
什麼是JSON?
將 JSON 資料填入 <script> 標籤中,前端透過 DOM 取得 JSON字串並解析成物件。 </script>
<script type="text/template" id="data">{"username":"nimojs","userid":1}</script> <script> var data = JSON.parse($('#data').html()); //{username:"nimojs",userid:1} </script>
優點:
頁面載入完成後就可以取得到資料。不佔用全域變量,可傳遞大量資料集合。
缺點:
資料量特別大時會導致頁面初次載入變慢。變慢不只是檔案大小導致的,也因為伺服器查詢資料並回傳合集是需要時間,可使用AJAX取得JSON完成按需載入和載入等待。
使用建議:
適合傳遞在DOM載入完成時就需要用到的大量資料集合。例如:前端控制頁面渲染,後端將JSON資料來源填入 <script> 由前端使用 JavaScript模板引擎進行頁面渲染。 </script>
AJAX取得JSON
使用 AJAX 取得JSON資料
<span id="showdata">查看资料</span> <div style="display:none;" id="box"> <h2 id="用户信息">用户信息</h2> <p id="info"><img src="/static/imghwm/default1.png" data-src="loading.gif" class="lazy" / alt="實作前後端資料互動方法總結_基礎知識" ></p> </div> $('#showdata').on('click',function(){ $('#box').show(); $.getJSON('/ajax/userdata/',function(oData){ // oData = {"username":"nimojs","userid":1} $('#info').html('用户名:' + oData.username + '<br>用户ID:' + oData.userid); }) })
這是一個透過AJAX 取得使用者資料的範例。流程如下:
頁面上只顯示查看資料
用戶點擊查看資料
顯示使用者資訊和 loading 圖片
向伺服器發送獲取用戶資訊的AJAX請求
伺服器回傳JSON字串,$.getJSON 自動將傳回的 JSON字串轉換為物件
填充內容到
優點:
不佔用全域變數和 DOM 節點,可以自由控制取得資料的觸發條件(頁面載入完成時、使用者點擊查看資料時或使用者點擊某個按鈕時)。當開始取得資料時可使用 loading 圖片佔位提示使用者資料正在讀取。防止頁面載入所有資料導致的頁面載入緩慢。
缺點:
會產生額外的HTTP請求。不能在DOM載入完成以後立即獲取,需要發送請求-接收回應。
使用建議:
適合載入非主要資訊、設定觸發條件(使用者點擊查看資料時),並提供友善的資料讀取等待提示。
WebSocket即時傳輸資料
如果將 AJAX請求和回應比喻成給伺服器發短信和等待伺服器回复短信,而 WebSocket 就如同和伺服器打電話。
此處不對WebSocket做過多介紹,附上參考資料:
Wiki:WebSocket
使用 HTML5 WebSocket 建立即時 Web 應用
Ajax vs WebSocket
總結
每種情況都有每種情況的用處,沒有絕對正確的方法。根據實際情況靈活的選擇獲取數據方式。
以上所述就是本文的全部內容了,希望大家能夠喜歡。

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

利用輕鬆的網頁佈局:8 ESTISSEL插件jQuery大大簡化了網頁佈局。 本文重點介紹了簡化該過程的八個功能強大的JQuery插件,對於手動網站創建特別有用

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

該帖子編寫了有用的作弊表,參考指南,快速食譜以及用於Android,BlackBerry和iPhone應用程序開發的代碼片段。 沒有開發人員應該沒有他們! 觸摸手勢參考指南(PDF)是Desig的寶貴資源

jQuery是一個很棒的JavaScript框架。但是,與任何圖書館一樣,有時有必要在引擎蓋下發現發生了什麼。也許是因為您正在追踪一個錯誤,或者只是對jQuery如何實現特定UI感到好奇

10款趣味橫生的jQuery遊戲插件,讓您的網站更具吸引力,提升用戶粘性!雖然Flash仍然是開發休閒網頁遊戲的最佳軟件,但jQuery也能創造出令人驚喜的效果,雖然無法與純動作Flash遊戲媲美,但在某些情況下,您也能在瀏覽器中獲得意想不到的樂趣。 jQuery井字棋遊戲 遊戲編程的“Hello world”,現在有了jQuery版本。 源碼 jQuery瘋狂填詞遊戲 這是一個填空遊戲,由於不知道單詞的上下文,可能會產生一些古怪的結果。 源碼 jQuery掃雷遊戲

本教程演示瞭如何使用jQuery創建迷人的視差背景效果。 我們將構建一個帶有分層圖像的標題橫幅,從而創造出令人驚嘆的視覺深度。 更新的插件可與JQuery 1.6.4及更高版本一起使用。 下載


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器