网页如何给js后台传递数字类型参数

网页无法通过get方法传递数字参数给js后台,就是网页端写的是数字参数,传递给后台也变成了数字字符串。而js对数字类型和字符串类型是不相同的。由于我们的代码是通过中间件挂载接口的,通过joi库检查参数。

const Joi = require('joi');
//注意:pageSize为0代表不拉取列表数据,只是获取页面总数
const pagingJoi = {
    page: Joi.number().min(1).required().error(new Error('页码不能小于1')),
    pageSize: Joi.number().min(0).required().error(new Error('页码数量不能小于0')),
};

const queryTestSchema = Joi.object({
    page: pagingJoi.page,
    pageSize: pagingJoi.pageSize,
});

使用的代码如下:

    @route('GET', '/erp/queryTest')
    @middleware(validateSchemaJoi(queryTestSchema))
    async qqueryTest(ctx) {
        const data = Util.getRequestData(ctx);
        const result = await StatisticsConsultantService.queryTest(data);
        return ctx.cc('查询成功', true, result);
    }

当用get请求传递参数时,数字类型的参数page和pageSize会被自动转换成字符串类型。导致校验失败。
解决方案一:把请求修改为POST请求;
方案二:不用中间件校验数字参数,在处理函数强制转换成数字类型,再在里面进行校验。

    page = Number(page);
    pageSize = Number(pageSize);

同理,当网页通过get请求给后台传递一个数组对象也会被转化为字符串类型。采用post方式可以传递数组类型的对象。

要修改`date`的值并且将其传递后台,可以使用JavaScript的`Date`对象和AJAX技术。 首先,创建一个`Date`对象来代表我们要传递的日期。可以使用`new Date()`构造函数创建一个当前的日期对象。 ```javascript var currentDate = new Date(); ``` 接下来,使用`set`方法来修改日期的值。例如,如果要将日期设置为一个特定的年份、月份和日期,可以使用`setFullYear()`、`setMonth()`和`setDate()`方法。 ```javascript currentDate.setFullYear(2022); currentDate.setMonth(0); // 月份从0开始,0表示一月 currentDate.setDate(1); ``` 然后,可以将修改后的日期传递后台。可以使用AJAX技术将数据以POST或GET方式发送到后台服务器。这里以POST方式为例: ```javascript var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // 请求成功后执行的操作 console.log(xmlhttp.responseText); } }; xmlhttp.open("POST", "backend_url", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("date=" + currentDate.toISOString()); ``` 以上代码创建了一个XMLHttpRequest对象,定义了请求完成后执行的回调函数。然后,使用`open()`方法指定请求的类型、URL和是否异步。通过`setRequestHeader()`方法设置请求头的Content-Type为`application/x-www-form-urlencoded`。最后,使用`send()`方法将日期及其对应的值作为参数发送到后台后台接受到前端发送的请求后,可以通过相应的服务器端的编程语言(如PHP、Java等)来获取到传递的日期值,并进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值