关于前后端的参数传递

embedded/2024/9/19 0:48:17/ 标签: node.js, javascript, 前端, 后端, ajax, jquery, html

html" title=前端>前端html" title=javascript>javascript,html" title=后端>后端nodejs+express为例,html" title=后端>后端可以从html" title=前端>前端发来的request里获取这些属性:header、query、url、params、body,其中params和query是从url中解析获得,不过express已帮我们做好了,就不用我们自己再折腾处理url里的这些参数,除了body外,其他位置传递参数的话,html" title=后端>后端直接取就可以了,不用再通过解析器来处理,不过由于浏览器对参数长度的限制,参数较多或参数较长的话,就只能通过body来传递参数了,这时候就需要考虑参数的编码和解析了。
html表单提交到html" title=后端>后端,form属性里enctype可以指定编码类型,一般传二进制文件或base64编码的图片或数据采用multipart/form-data ,传普通的字段值采用 application/x-www-form-urlencoded ,前html" title=后端>后端理解一致不编码直接文本字符串传输可以用text/plain。
html" title=后端>后端用对应的解析方法解析即可,比如可以将express.urlencoded({ extended: false })作为对应接口调用的中间件来处理传入的body参数解析。
html" title=jquery>jquery里的html" title=ajax>ajax调用,又是怎样的呢?一般我们会将参数放在html" title=ajax>ajax的data属性的json对象中,每个参数对应json对象的一个属性,get方法时,这些参数会转换成query参数传递到html" title=后端>后端,html" title=后端>后端直接从req.query中获取即可。post方法的话,这些参数会放在body里传递到html" title=后端>后端。注意了,此时有个小坑:如果在html" title=ajax>ajax调用中,代码这样写的话

html" title=javascript>javascript">    $.html" title=ajax>ajax({url: './hello1',type: 'post',data: {"hello2":"hello3"},contentType:'application/json'});

那么html" title=后端>后端中间件用express.json()的话,会报错,正确的书写方法是:

html" title=javascript>javascript">    $.html" title=ajax>ajax({url: './hello1',type: 'post',data: JSON.stringify({"hello2":"hello3"}),contentType:'application/json'});

这么难看?还要转字符串?能不能写得简单些呢,是可以的

html" title=javascript>javascript">    $.html" title=ajax>ajax({url: './hello1',type: 'post',data: {"hello2":"hello3"}});

不过html" title=后端>后端就不能用json来解析了,要用express.urlencoded({ extended: false })这个中间件。那不是很好么?html" title=前端>前端代码清爽了许多呢。不是这样理解,urlencode编码跟json比起来有一些限制,特别是传递一些带有特殊字符的参数会导致前html" title=后端>后端不一致而出现问题,所以我个人是建议最好采用json来传递参数。


http://www.ppmy.cn/embedded/39255.html

相关文章

pytest + yaml 框架 - 参数化读取文件路径优化

针对小伙伴提出参数化时读取外部文件,在项目根路径运行没问题,但是进入到项目下子文件夹运行用例,就会找不到文件问题做了优化。 关于参数化读取外部文件相关内容参考前面这篇pytest yaml 框架 -25.参数化数据支持读取外部文件txt/csv/json/…

大模型微调实战之强化学习 贝尔曼方程及价值函数(五)

大模型微调实战之强化学习 贝尔曼方程及价值函数(五) 现在, 看一下状态-动作值函数的示意图: 这个图表示假设首先采取一些行动(a)。因此,由于动作(a),代理可能会被环境转换到这些状…

LeetCode 19. 删除链表的倒数第 N 个结点

文章目录 题目思路代码 题目 19. 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入&…

【打工日常】云原生之搭建个人在线简历平台OpenResume

一、open-resume介绍 1.open-resume简介 OpenResume 是一个功能强大的开源简历生成器和简历解析器。OpenResume 的目标是为每个人提供免费的现代专业简历设计,让任何人都能充满信心地申请工作。 2.open-resume特点 实时UI更新 当您输入简历信息时,简历P…

封装Springboot基础框架功能-03

在些模块中汇总了一些web开发常用的配置和功能。 模块源码结构 Restful API常用定义 QueryParam请求参数 Data public class QueryParam {private String key;private String value; }RestfulController实现 RestfulController.java,主要汇总一些常用的restful的…

云衔科技成为卓豪Zoho中国区代理商,开启智能化企业管理新篇章

每一家企业数字化转型,都在寻求通过技术创新实现业务的飞跃。为了更好地服务于中国企业的数字化转型需求,云衔科技荣幸宣布正式成为卓豪Zoho中国区代理商,这一强强联合将为市场带来全新的数字化解决方案与服务体验,共同开启中国企…

oracle 修改dmp文件导入导出文件位置(DATA_PUMP_DIR)

查询dmp导入、导出文件所在位置: SELECT * FROM DBA_DIRECTORIES T WHERE T.DIRECTORY_NAME DATA_PUMP_DIR; 2.修改DATA_PUMP_DIR配置的文件位置(直接在数据库执行脚本即可): create or replace directory DATA_PUMP_DIR as /opt/tools/oracle/dmpFile/;或者通过…

基于Spring Boot的酒店管理系统设计与实现

基于Spring Boot的酒店管理系统设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统部分展示 系统首页界面图,在系统首页可以查看首页…

ECC 号码总结

1、问题背景 在手机开发过程中,经常遇见各种紧急号码问题,在此特意总结下紧急号码相关知识。 2、紧急号码来源 在MTK RILD EccNumberSource.h中,定义了如下几种紧急号码来源。 按优先级排序介绍如下 2.1、SOURCE_NETWORK 网络下发&#xff…

kafka的简单使用

Kafka是一个分布式的流处理平台,主要用于处理高吞吐量的实时数据流。在Kafka中,有一些重要的概念需要了解,包括以下几个: Broker:Kafka集群中的每个服务器节点被称为Broker。每个Broker负责处理一部分的消息流量&#…

巩固学习3

jieba是优秀的中文分词第三方库。由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个单词,这种手段就叫分词。而jieba是python计算生态中非常优秀的中文分词第三方库,需要通过安装来使用它。 简单来说&#xff…

js 获取某一天所在周的所有天

封装函数 function getWeekDays(date) {let weekDays [];let day date.getDay() - 1;let startDate new Date(date);startDate.setDate(startDate.getDate() - day);for (let i 0; i < 7; i) {weekDays.push(new Date(startDate));startDate.setDate(startDate.getDate…

机器学习-如何为模型选择评估指标?

为机器学习模型选择评估指标是一个关键步骤&#xff0c;因为它直接关联到如何衡量模型的性能。以下是选择评估指标的一些建议&#xff1a; 1、理解问题类型&#xff1a; 分类问题&#xff1a;对于二分类问题&#xff0c;常见的评估指标包括准确率、精确率、召回率、F1分数、R…

粤嵌—2024/4/26—跳跃游戏 ||

代码实现&#xff1a; 方法一&#xff1a;回溯 历史答案剪枝优化——超时 int *dis;void dfs(int k, int startindex, int *nums, int numsSize) {if (dis[startindex] < k) {return;}dis[startindex] k;for (int i 0; i < nums[startindex]; i) {if (startindex i &…

前端权限控制

分享一些在Vue项目中实现权限控制的方法 方法描述基于路由的权限控制使用Vue Router中的路由守卫&#xff08;beforeEach&#xff09;来检查用户权限&#xff0c;并根据权限决定是否允许导航到特定路由。基于角色的权限控制将用户的角色信息与权限关联&#xff0c;根据用户的角…

Linux修炼之路之初识操作系统+基础指令(1)

目录 引言 一&#xff1a;对操作系统(OS)的简单了解 1.操作系统(OS) 是什么 2.操作系统好坏的衡量标准 3.操作系统存在的重要性 4.理解所有在计算机上的操作 二&#xff1a;Linux与windows操作的特点区别 三&#xff1a;基础指令 1.ls 指令 1.使用 2.常用选项 2.…

Leetcode 13.罗马数字转整数

文章目录 题目思路代码 题目 13.罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D …

Android手机应用开发工程师应届生学习大纲

一、学习目标 本学习大纲旨在帮助应届毕业大学生系统学习Android应用开发&#xff0c;从基础到进阶&#xff0c;掌握app制作的各个环节&#xff0c;并熟悉实际工作中常用的工具和技术。 二、学习内容 Android基础 Android系统架构介绍Android开发环境搭建&#xff08;JDK、A…

ubantu安装rabbbitmq

ubantu安装rabbbitmq 安装Erlang1、在linux下直接安装2、上传Erlang文件后解压 安装rabbitmq开启web管理接口创建用户及修改guest密码&#xff0c;删除guest默认账号 安装Erlang 1、在linux下直接安装 #运行以下命令直接安装&#xff1a; sudo apt-get install erlang#可运行…

MySQL环境搭建

MySQL 环境搭建 一、卸载不需要的MySQL环境 #1.关闭服务 systemctl stop mysql #2.查找MySQL安装包&#xff0c;并删除 rpm -qa&#xff1b;xargs yum remove -y 二、获取MySQL官方yum源 http://repo.mysql.com/ 根据系统版本下载对应的文件&#xff1b;然后使用rz将文件传…