當前位置:首頁 » 網頁前端 » 前端怎麼實時獲取後端數據
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端怎麼實時獲取後端數據

發布時間: 2023-01-24 19:03:42

1. 後台介面數據變化,H5怎麼實時獲取

簡單點說,就是前端技術與後端技術溝通,根據業務定義交互介面,交互介面的的形式可能包含:
1、後端將數據輸出到HTML頁面,在JS控制邏輯中需要訪問數據時可以從HTML中取得。
2、定義前後端請求的介面,一般是AJAX介面,如果存在跨域問題或一些特殊的業務場景,可能也會使用JSONP或者其他方式,總之,不論是何種方式請求,目的都是動態的請求數據,然後根據返回數據刷新頁面內容。返回數據的格式現在主流是使用JSON格式,但是也不排除一些特殊的業務場景需要是使用XML或其他格式的數據。

2. 寫給產品經理之前端是如何展示後端數據的

移動互聯網的迅猛發展讓移動APP呈現出爆發之勢,這兩年更是移動開發程序員的春天。

今天的互聯網上充斥著產品與技術的撕逼。也許你會問產品經理到底要不要懂技術?由此引申出,產品經理到底要不要懂設計?產品經理到底要不要懂運營?產品經理到底要不要懂市場?產品經理到底要不要懂業務?這所有問題的來源都是大家對於產品經理的工作認識不一致。

每個人心中都有一個產品經理的定義,產品經理在技術方面更多的是去統籌和規劃。不是畫畫圖寫寫文檔就可以了。這裡面更多的需要的是對邏輯的梳理和拆分。
例如很簡單的一個app內嵌發紅包的活動,產品經理需要確定整個活動的流程。從用戶進入頁面的那一瞬間就應該被產品經理掌控。他的每一個步驟,每一個操作會帶來什麼結果,有哪些變數會導致活動進程失敗,這些都要產品去考慮。等到活動邏輯和過程全部梳理完成,下面就要進行拆分了。還是以發紅包為例,紅包中金額是客戶端寫死還是服務端進行計算,紅包領取資格需要服務端返回幾種結果,每種結果對應客戶端的提示是什麼,用戶領取紅包以後服務端需要記錄那些信息(帳號,uid,領取時間,金額,是否使用等),客戶端哪些地方需要加入計數器進行數據統計。總結起來其實就是,產品經理需要根據開發的每一個環節,將所有內容分類整理,並分發給不同部分的開發進行研發。最後,還需要給測試准備好check list,當測試按照check list測試完成以後,才可以上線。

以上種種都需要產品對前端如何顯示後端數據有一個清晰的認識才能規劃好數據如何展示。是APP寫死呢還是後台返回,在用戶任務進行的時候有哪些可能case。只有搞清楚這些,產品才能在實際的開發中掌握好整個項目的流程與進展,才能不被開發給糊弄。

簡單的說,前端僅僅將後端返回的數據展示在頁面上,不做過多的邏輯處理。前端需要關心的是,數據如何更好的展示出來,頁面效果如何做出來,以及其性能問題。
而後端就是負責對這些數據進行處理,提供給前端展示。

前端一般有H5、android、ios等多端界面。數據不要輕易寫死在前端裡面,不然到時候三端都要修改,費時費力。而將這些變化多數據讓後端進行處理,前端將這個數據取出來顯示出來就行了。

舉個例子吧,下圖是一個美團app首頁團購的展示效果

上方美食等8個icon一般為固定展示欄目,非特殊情況不會修改。那麼前端一般是寫死在app中,等到需要更新的時候更新app即可。

而下方猜你喜歡是一個列表,該列表數據經常變化,數據寫在服務端維護,app取出數據進行展示即可。

首先,前段對頁面的展示是分兩步走的。
第一、在本地繪制好界面,當然此時未連api會填充一些假數據,或寫一些默認值。
第二、連api進行數據獲取,將數據填充進界面。

既然如此,咱們簡單看下前端拿到的數據到底長什麼樣的吧。
現在前端獲取到的數據基本是json數據。

不需要特別懂裡面每一個的含義,只需要知道,前端通過"title"這個鍵名(key)就可以拿到"合輯護甲"這個值(value)。 "title": "合輯護甲" 這一整個就是俗稱的一個欄位。通過該欄位前端就可以獲取到列表的標題了。當然這個列表只是簡單的展示用,還有諸如圖片地址、優惠信息、已售份額等信息沒有提供,這就是缺少欄位的情況。
前後端就是通過這樣的一個定義獲取/傳遞數據的。

考慮到後期拓展、需求變更等,一般來說,涉及到計算的、可能有變動的,一律不要讓前端來弄。
還是剛才那個例子,在剛才那個列表中有一個「立減5元」的橙黃色tag。
這個tag信息,如果考慮不充分,比如說,後端只提供一個數字5,然後前端在其頁面寫死「立減x元」,x為填入後端提供的數字,顏色固定為橙黃色。這個如果需求不修改還好,如果後期需要新增一個「滿20減5元」的紅色tag不傻眼了嗎?
到時候只能通過升級app來解決,而且不升級的老用戶將永遠看不到這個紅色的tag。
所以說,考慮到程序的可復用和拓展性,需要產品將後期可能新增或變更的需求考慮好,和前後端進行溝通,讓前後端設計好實現,盡量降低程序的耦合和硬編碼。這才能使一個產品更加健壯以及讓苦逼的程序猿少加班的關鍵。

那麼剛才那個tag的需求如何設計才合理呢?
首先是tag顯示文字,全權由後端提供,可以是多個欄位,由前端進行拼接。然後是tag的顏色,提供幾種樣式讓前端判斷是一種可行的辦法,但是直接提供tag的色值給前端的這種方式無疑給前端展示增加了無限的可能。
是不是也要增加一個tag形狀的欄位呢?
俗話說,過猶不及。tag形狀這種東西真的很少變更,欄位太多無疑會增加開發的時間成本,而且會讓人有一種捨本逐末之感。

前端獲取到後端數據後,如果前端不主動刷新重新請求數據的話,這個頁面的數據在該頁面銷毀前會一直保持不變。

如何理解?
首先,第一次進入一個頁面,該頁面數據為空或默認數據。此時前端會鏈接api請求數據。數據請求完成後,填充進頁面。那麼本次聯網請求就完成了,在前端不進行二次數據請求之前,該頁面會一直保持本次請求的數據。也就是說,就算服務端修改了數據,前端此時是不能事實的進行更新的,因為我前端不知道你數據更新了。

那麼在這個需要實時更新頁面數據的時候和前端講這種需求會被前端直接回絕:「做不了」。這個時候產品咋辦,怪怪妥協?最後背鍋的還是自己,而且自己也不知道是真做不了還是假做不了。

實時刷新也不是不能做,只是做的成本略高,需要和後端進行配合,像微信聊天一樣和後端進行長連接(socket),這樣服務端數據變更前端就知道數據變更了。
當然如果稍懂頁面刷新機制的話,可以要求前端在適當的時機進行頁面刷新,如在頁面可見的時候進行刷新,這樣用戶每次看到的都是最新的數據。也可以讓用戶主動刷新,如新增刷新功能。

產品懂技術這件事情,不僅會降低和開發同學溝通時的難度和被歧視風險,還會提升在面對開發同學意見時的判斷力,會降低被技術團隊忽悠的幾率。同時,在需要向上級解釋技術原因導致變更的情況下,也會有助於說服老闆。
「聞道有先後,術業有專攻」,要相信自己所接觸的開發團隊是專業的,靠譜的,相信開發團隊為實現需求所做出的技術方案是合理的,最優的。如果有質疑,可以加深溝通,以合適的方式提出自己的質疑。這里要補充一句的是,這個信任過程是需要建立的,也是會根據團隊的表現不斷變化的;同理,其實團隊對於產品經理的信任度也是一樣的情況。
吐槽是沒有意義的,關鍵還是要解決問題。如果覺得產品經理不靠譜,那麼有沒有進行過深入的溝通?如果覺得開發不好溝通,那麼有沒有進行過了解,不好溝通的原因在哪裡?如果當事人本身確實不可溝通,那麼有沒有考慮和對方的老闆溝通,或者通過自己的老闆如實反映情況?吐槽是最容易的,解決問題反而會很難。

3. 前端如何做與後台數據的對接

現在在前端獲取後台數據的主流方式是使用Ajax非同步載入0。前端頁面通過Ajax向後台請求數據,後台在放回給前端頁面如果你有前端js基礎和後台動態頁面基礎的話只需要學習Ajax就可以,個把小時就能學會用了。初學的話你要先了解下B/S架構的原理,雖然簡單,但是很重要,這個原理貫穿在整個動態網站的設計製作之中。具體學習的話你可以上W3school網站上學,上面相關的web設計製作資料都比較全,也淺顯易懂。建議學習的順序為HTML-》CSS-》Javascript-》XML-》PHP(或asp或.Net)。
希望對你有幫助。

4. html怎麼獲取後端數據獲取方法介紹

1、首先先創建一個HTML,html是前端頁面骨架,然後通過javascript調用後端接。口,接受返回的response,這里通過前端的一個select下拉框,調用後台的介面填充數據。
2、html中的需求是在頁面在完成後select獲取資料庫中的值並填充其中,這里定義ajax方法。
3、然後編寫後台的程序,編寫servlet/controller中的獲取資料庫值的方法。
4、在前端根據servlet/controller返回的值在js中渲染標簽中的值。
5、通過ajax的方式先移除原先的元素,然後再把資料庫的值填充進去。
6、因為html中引用了jquery,所以一定要引入jquery腳本
7、開發servlet/controller時要注意返回數據的格式。

5. spring mvc 前端怎麼獲取後端數據

方式一 通過 URL 傳參
通過 URL 掛接參數,如 /auth/getUser?userid='6'
伺服器端方法可編寫為: getUser(String userid) ,也可新增其他參數如HttpSession, HttpServletRequest,HttpServletResponse,Mode,ModelAndView等。
方式二 單值傳參
前台調用如:
ajaxPost( "/base/user/exchangeSort" ,{ "id" :rid, "otherid" :otherid}, function(data,status){
xxxxxx
xxxxxx
});
伺服器端為:
public String exchangeSort(String id, String otherid)
方式三 對象傳參
前台調用如:
var org={id:id};
ajaxPost("/base/org/getOrgById", org,function(data,textStatus){
xxxx
xxxx
});
伺服器端為 :
public Org getOrgById(Org org)
方式四 對象序列化傳參
前台調用如:
var ueser={id:rowId};
var data=ajaxPost("/base/user/findById",{"userObj":JSON.stringify(user)},null);
或者
var ueser={ };// 創建對象
user["id"]=id;
user["name"]=$("#name").val();
user["dept"]={};// 外鍵對象
user["dept"]["id"]=$("#deptid").val();
ajaxPost("/base/user/addUser",{"userObj":JSON.stringify(user)},function(data){xxxx;xxxxx;});
伺服器端為:
@RequestMapping ( "/findById" )
@ResponseBody
public UserInfo findById(String userObj) {
// 使用 fastJSON
UserInfo user = JSON.parseObject (userObj, UserInfo. class );
user = (UserInfo) userService . findById (UserInfo. class , user.getId());
return user;
}
方式五 列表傳參
前台代碼如:
var objList = new Array();
grid.forEachRow( function (rId) {
var index = grid.getRowIndex(rId);
var obj = {};
obj[ "id" ] = rId;
obj[ "user" ] = {};
obj[ "user" ][ "id" ] = $( "#userId" ).val();
// 不推薦這樣的寫法
//obj["kinShip"] = grid.cells(rId, 1).getValue();
//obj["name"] = grid.cells(rId, 2).getValue();
obj["kinShip"]=grid.cells(rId,grid. getColIndexById ("columnName")).getValue();
obj["name"]=grid.cells(rId,grid.getColIndexById("name")).getValue();
if (grid.cells(rId, 3).getValue()!= null && grid.cells(rId, 3).getValue()!= "" ) {
var str = grid.cells(rId, 3).getValue().split( "-" );
var day = parseFloat(str[2]);
var month = parseFloat(str[1])-1;
var year = parseInt(str[0]);
var date= new Date();
date.setFullYear(year, month, day);
obj[ "birth" ] = date;
} else {
obj[ "birth" ] = "" ;
}
obj[ "politicalStatus" ] = grid.cells(rId, 4).getValue();
obj[ "workUnit" ] = grid.cells(rId, 5).getValue();
if (grid.cells(rId, 6).isChecked())
obj[ "isContact" ] = "1" ;
else
obj[ "isContact" ] = "0" ;
obj[ "phone" ] = grid.cells(rId, 7).getValue();
obj[ "remark" ] = grid.cells(rId, 8).getValue();
obj[ "sort" ] = index;
objList.push(obj);
});

ajaxPost( "/base/user/addUpdateUserHomeList" , {
"userHomeList" : JSON.stringify(objList),
"userId" : $( "#userId" ).val()
}, function (data, status) {
xxxxx
});
伺服器端:
@RequestMapping("/addUpdateUserHomeList")
@ResponseBody
public String addUpdateUserHomeList(String userHomeList, String userId) {
List<UserHome> userHomes = JSON
.parseArray(userHomeList, UserHome.class); //fastJSON
if (userHomes != null && userHomes.size() > 0) {
try {
userService.addUpdateUserHomeList(userHomes, userId);
} catch (Exception e) {
e.printStackTrace();
}
}
return "200";
}
附上ajaxPost代碼:
function ajaxPost(url,dataParam,callback){
var retData=null;
$.ajax({
type: "post",
url: url,
data: dataParam,
dataType: "json",
success: function (data,status) {
// alert(data);
retData=data;
if(callback!=null&&callback!=""&&callback!=undefined)
callback(data,status);
},
error: function (err,err1,err2) {
alertMsg.error("調用方法發生異常:"+JSON.stringify(err)+"err1"+ JSON.stringify(err1)+"err2:"+JSON.stringify(err2));
}
});
return retData;
}

6. 前端怎麼獲取後台所有的ld所有數據啊。每個id都是不同的內容數據。

ajax, 頁面完成之後就是,document ready後,向後台發送請求,後台接受到前台發送的請求之後就查詢session的用戶數據判斷用戶登錄,不同的情況會發送不同的code值和數據,比如說沒有登錄 ,發送code=0 前台接受到之後就知道是沒有登錄 然後就顯示 請 登 錄 這樣的 如果登錄是code = 1 然後後面跟data= {uid = xxx}這樣的 接受到code=1了 就說明已經登錄了 在返回的data里獲取信息顯示出來就可以了

你可以去後盾人平台看一下,裡面的東西不錯

7. 前端集合的對象的值在後端怎麼取

如果前端集合的對象是通過AJAX請求發送到後端的,那麼在後端可以通過接收請求參數的方式獲取對象的值。
如果前端集合的對象是通過AJAX請求發送到後端的,那麼在後端可以通過接收請求參數的方式獲取對象的值。
例如,如果前端通過AJAX請求發送了如下數據:
{
"name": "John",
"age": 30,
"hobbies": ["music", "sports"]
}
那麼在後端可以通過如下代碼獲取對象的值:
// 獲取請求參數
const data = request.getParameterMap()
// 獲取對象的值
const name = data.get('name')
const age = data.get('age')
const hobbies = data.get('hobbies')
// 輸出對象的值
console.log(name) // John
console.log(age) // 30
console.log(hobbies) // ["music", "sports"]
上面的代碼通過request.getParameterMap方法獲取請求參數,然後通過get方法獲取對象的屬性值。

8. web前端和後端怎麼進行數據交互

總結有以下幾種方式:
1. HTML賦值
2. JS賦值
3. script填充JSON
4. AJAX獲取JSON
5. WebSocket實時傳輸數據
詳細了解,去搜索下,我相信你會更明白。

9. 前端和後端怎麼進行數據交互的

過程如下:
一、前端組織參數列表,採用get或post方式提交到指定的URL。
二、URL就是後端程序,先接收參數,根據參數值確定執行的程序功能,執行後將執行結果輸出到前台。
三、Ajax將「二」中的返回值進行解析,根據相關條件更新前端界面就可以了。

10. web後端和前端是怎麼連接的

web後端和前端是怎麼連接的

WEB後端和WEB前端可以通過 前端模板引擎 後端模板引擎 進行連接。

後端模板引擎:

WEB前端開發人員開發好前端靜態頁面,然後交給WEB後端開發人員,他們再利用後端引擎模板(比如:freemarker)把前端頁面與後端數據進行連接,形參一個動態頁面。

前端模板引擎:

描述成前端模板引擎可能不太對,但是比較好理解吧。當前比較流行的Vue.js、Angular.js、React.js 等MVVM前端框架都自帶了前端模板引擎。

WEB前端人員與WEB後端人員一起協定好數據介面格式(請求地址、數據格式、數據欄位等),然後WEB前端人員與WEB後端人員同時進行項目的開發,WEB前端人員通過AJAX的方式從WEB後端獲取到前端頁面的相關JSON數據,然後通過MVVM前端框架把JSON數據渲染到頁面裡面,最終形成了一個動態頁面。

網站數據處理主要分為三層。

第一,表示層,這部分可以用HTML代碼,CSS/Javascript代碼來實現等。通過前端代碼可以實現網頁的布局和設計。這層又可以稱為顯示層。也就是你用瀏覽器打開能看到的網頁。

第二層,是業務層,這層是負責處理數據的。常用的代碼語言有PHP,JSP,Java等。通過這些後台處理語言的演算法來處理前台傳回的數據。必要的時候進行操作資料庫,然後把結果返回給前端網頁。

第三層,是數據層,這個就是資料庫,用來存儲數據的。通過業務層的操作可以實現增刪改資料庫的操作。

舉個例子就是這樣,比方說你在網頁上填一個表格然後提交會有以下幾種數據傳輸經過:

①你接觸到的是這個網頁是屬於表示層,這個網頁一般由HTML標簽結合CSS/JAVASCRIPT來實現的。 這時候你要先填入數據。

②然後你按提交觸發後台處理機制,這時候數據會傳到後台的代碼進行處理。這部分代碼根據不同網站可以使PHP,JSP,JAVA等。 代碼根據程序員預設的演算法將收到的數據進行處理之後會相應的對資料庫進行操作,存儲數據等。

③成功操作完資料庫之後,業務層的代碼會再向表示層也就是顯示器端傳回一個指令通知你表格填寫成功。

這就是基本的網站數據交換邏輯了

後端會暴露出一個處理數據邏輯的介面(api),然後哦前端通過js像後端暴露的api發起請求過程可攜帶參數,然後後端接到請求後會返回數據給前端,前端拿到數據後會渲染在頁面上

治安監控的前端是怎麼連接的?

固定攝像機前端有和電源(220V轉12V)全方位像像機前端一根視頻線(和主機採集卡連接)一根電源線220V(連接解碼器)一根通訊線(連接主機上的碼轉)

後端thinkphp和前端vue怎麼協調

hinkphp作為服務端,為客戶端提供數據。而Vue是客戶端的一個JavaScript框架。便於我們對頁面進行處理。
一般情況下,vue通過非同步請求來獲取數據。由於實例化vue時已經將相關的變數、模板等定義好了。
當獲取到thinkphp回傳的數據後,將會自動的把數據對應的呈現在網頁上。

php在web開發中技術含量排第三(jsp,.在前),但由於php簡單,開發周期短,運行速度快,很快就成為中小型網站的首選技術,像CMS全球超過70%都是php的.再說大型網站現在也很少,所以,學習php找工作要容易得多,自己想接私單也容易拿下!
就是這樣的,我剛剛在後盾人知道的那邊有詳細的教學視頻.,可以給你學習

thinkphp作為服務端,為客戶端提供數據。而Vue是客戶端的一個JavaScript框架。便於我們對頁面進行處理。
一般情況下,vue通過非同步請求來獲取數據。由於實例化vue時已經將相關的變數、模板等定義好了。
當獲取到thinkphp回傳的數據後,將會自動的把數據對應的呈現在網頁上。 你看過後很簡單吧以後不會可以向我一樣經常到後盾人找找相關教材看看就會了,希望能幫到你,給個採納吧謝謝(⁄ ⁄•⁄ω⁄•⁄ ⁄)

thinkphp 設計服務端,全restful api的規范就行設計(其實只要返回json或xml就可以),
vue-resouve只是一個請求庫,和jquery 的 ajax 是大同小異的