问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

流行的前后端交互是如何实现的?

发布网友 发布时间:2022-04-27 05:43

我来回答

2个回答

懂视网 时间:2022-05-15 12:41

这次给大家带来前后端数据应该如何科学交互,前后端数据交互的注意事项有哪些,下面就是实战案例,一起来看一下。

HTML赋值

JS赋值

script填充JSON

AJAX获取JSON

WebSocket实时传输数据

总结

1. HTML赋值输出到 Element 的 value 或 data-name

<div data-value="<?php echo $user_avatar;?>"></div>

渲染结果

<div data-avatar="https://avatars1.githubusercontent.com/u/3949015?v=3&s=40"></div>

使用 JS 获取$('input').val();

$('div').data('avatar');

优点:不占用全局变量,由 JS 自由获取。
使用建议:适合传递简单数据,也非常适合多个简单数据与 Element 绑定关系。

 <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>

2. JS赋值
将数据填充到 <script> 的 JavaScript 变量声明中。

<script>
 var user_avatar = "<?php echo $user_avatar;?>";
 // 渲染结果
 // var user_avatar = "https://avatars1.githubusercontent.com/u/3949015?v=3&s=40";</script>

或使用 Smarty 后端模板引擎:

<script>
 var user_avatar = "{$user_avatar}";</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 方法。

3. script填充JSON****JSON 语法**填充 JSON 数据到 <script> 标签中,前端通过 DOM 获取 JSON字符串并解析成对象。

<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模板引擎 进行页面渲染。如何选择Javascript模板引擎(javascript template engine)?

4. AJAX获取JSON使用 AJAX 获取JSON数据

<span id="showdata">查看资料</span>
<div style="display:none;" id="box"> 
 <h2>用户信息</h2> 
 <p id="info">![](loading.gif)</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字符串转换为对象

填充内容到 <p id="info">

优点:不占用全局变量和 DOM 节点,可以自由控制获取数据的触发条件(页面加载完成时、用户点击查看资料时或用户点击某个按钮时)。当开始获取数据时可使用 loading 图片占位提示用户数据正在读取。防止页面加载所有数据导致的页面加载缓慢。

缺点:会产生额外的HTTP请求。不能在DOM加载完成以后立即获取,需要发送请求-接收响应。

使用建议:适合加载非主要信息、设定触发条件(用户点击查看资料时),并提供友好的数据读取等待提示。

5. WebSocket实时传输数据如果将 AJAX请求和响应比喻成给服务器发短信和等待服务器回复短信,而 WebSocket 就如同和服务器打电话。
此处不对WebSocket做过多介绍,附上参考资料:

WebSocket**

使用 HTML5 WebSocket 构建实时 Web 应用**

Ajax vs WebSocket**

6. 总结每种情况都有每种情况的用处,没有绝对正确的方法。根据实际情况灵活的选择获取数据方式。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

相关阅读:

html的盒模型详解

bootstrap-validator使用详解

sublime怎样快速的创建html头部代码

热心网友 时间:2022-05-15 09:49

比较流行MVVM,越来越多的公司开始采用前后端分离的开发模式。在前后端不分离的时代,比如ASP、JSP、PHP等开发模式,前端就是负责切图和编写静态页面模板,然后后端将数据渲染到前端提供的静态页面模板中,最后将页面渲染到浏览器就完成整个前后端交互过程。

状态响应码

用特定的数字表示一些意思。

1XX : 服务器已经成功接收到你的数据,正在处理,可以继续提交其数据。

2XX : 服务端成功响应(200请求)。

3XX : 重定向。

4XX : 请求错误(404 请求资源不存在 403 拒绝访问)。

5XX : 服务器内部错误(500)。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
YY聊天中哪些语音的会不会作为文件存下来 2023谷雨节气的含义 谷雨三候是什么 我老公欠债,外遇,我想离婚,怎么办 ...我提供了我的姓名,出生年月日,还有工作地点,会出什么事吗... 刚刚接到一个诈骗电话,问我要了我的姓名和出生年月日,会不会利用... 不小心接到骗子的电话,还告诉了我的姓名和出生年月日,要不要紧啊... 知道了姓名和出生年月日,能拿来作案吗? WOW安装要CD 是什么问题? 急急急、、、魔兽世界用盘安装时老要CD片 时怎么回事 取消以后就安装不... 每次下载魔兽世界安装中途都会断掉,要求插入什么CD,然后出现这么一段文... vue前后端分离 登录怎么控制 shiro前后台分开登录怎么实现 java中,前后端分离,如何实现session失效后,页面操作自动跳转登录... 做点心蛋糕必须要打蛋器么 上海银行二类卡收免费吗 开通浦发银行2类账户扣钱吗? 限量版是什么意思? 请问在日本买的电影bd完全生产限定版和普通版有什么区别吗?送些什么吗?为什么比通常版贵? 日本漫画限定版个通常版有什么区别 PC中英文限定版是什么意思 lol里限定版皮肤是什么意思 完全生产限定版与完全限定版与初回限定版是什么? 苹果12限定版是什么颜色 小黑瓶限定版是什么意思 高达限定版是什么意思?是限量发售吗? lululemon限定版是什么意思 限定版与限量版有什么差别? 以前工作的五险一金怎么查? “后来居上”原是说后生哪方面超过了前辈 后来居上,独立指什么生肖 洗纹身术后护理? 洗纹身后注意的事项? 洗纹身后,如何护理? 洗纹身后的注意事项有什么啊? 洗纹身后能喝酒吗? 洗纹身能彻底洗掉吗? “当尧之时,天下犹未平。”出自哪一篇文言文? 当尧之时,天下犹未平...是哪一篇文言文?并翻译。 《当尧之时》译文! 当尧之时,天下犹未...求翻译 当饶之时,天下犹未平。洪水横流,泛滥于天下 翻译 当尧之时天下犹未平中的文字论证了一个什么观点 【大禹治水】文言文翻译? 《尧时治水》翻译 当尧之时 “当尧之时,水逆行,泛滥于中国,蛇龙居之,民无所定,下者为巢,上者为营窟”反映了当时什么情况? 尧时治水的阅读答案!!!求啊~~ 谁知道朋祖的情况? 大禹治水一共多少个字 当尧之时,皋陶为士,将杀人。皋陶日杀之,三。尧曰宥之,三。”的译文、