Javascript 未定义的参数属性将在HTTP请求负载中清除
我将Javascript 未定义的参数属性将在HTTP请求负载中清除,javascript,http,Javascript,Http,我将physicalserver\u id字段添加到我的参数对象(params),然后发送HTTP请求: var params = this.entityServer params.extra_desc = JSON.stringify(this.entityServer.extra_desc) params.physicalserver_id = undefined debugger // there I have checked the `params.physicalserver_id
physicalserver\u id
字段添加到我的参数对象(params
),然后发送HTTP请求:
var params = this.entityServer
params.extra_desc = JSON.stringify(this.entityServer.extra_desc)
params.physicalserver_id = undefined
debugger // there I have checked the `params.physicalserver_id`
this.$http.post('/api/xxx/add/', params).then( (response) => {
console.log(response, 'lml')
})
但是,我从后端收到错误,告诉我需要physicalserver\u id
字段
在我的浏览器中,我检查请求负载:
并发现没有physicalserver\u id
如果我给出一个已有的号码:
params.physicalserver_id = 8
然后,问题消失了
编辑-1
我的问题是,在我的参数中,我给出了
physicalserver\u id=undefined
,但是当我请求API时,请求负载不存在physicalserver\u id
,请参见我的快照。在我的理解中,在JavaScript中,undefined意味着虚无。您将参数设置为不存在,程序将假定没有这样的参数。换句话说,程序根本找不到这个参数。因此,您必须为参数设置一个值。在我的理解中,在JavaScript中,未定义意味着无。您将参数设置为不存在,程序将假定没有这样的参数。换句话说,程序根本找不到这个参数。因此必须为参数设置一个值。这是JSON.stringify()
的行为
当您调用this.$http.post('/api/xxx/add/',params)
时,前端系统(我猜您使用的是Angular)将通过JSON.stringify()
将params
转换为字符串。由于params
是一个对象,因此在最终结果字符串中,所有具有未定义值的字段都将被忽略。因此,请求负载中将缺少physicalserver\u id
字段
有关详细说明,请参阅:
如果在转换过程中遇到未定义、函数或符号,则会将其忽略(当在对象中找到时)或将其删除为null(当在数组中找到时)
正如@HMR所评论的,您需要向API提供程序检查“如何发送空的physicalserver_id”。这是JSON.stringify()的行为
当您调用this.$http.post('/api/xxx/add/',params)
时,前端系统(我猜您使用的是Angular)将通过JSON.stringify()
将params
转换为字符串。由于params
是一个对象,因此在最终结果字符串中,所有具有未定义值的字段都将被忽略。因此,请求负载中将缺少physicalserver\u id
字段
有关详细说明,请参阅:
如果在转换过程中遇到未定义、函数或符号,则会将其忽略(当在对象中找到时)或将其删除为null(当在数组中找到时)
正如@HMR所评论的,您需要与API提供者就“如何发送空的physicalserver_id”进行检查。最好从对象中删除属性。但我不明白你的问题,到底是什么问题?如果请求符合预期,听起来后端可能会出现问题?因为您将其设置为未定义
,未定义
值不会被包括/发送。@PatrickEvans使用此语句替换原始值。现在我应该设置什么?这取决于您需要设置的API,但您可以尝试空字符串。未定义和空值参数将不会发送到请求!请改为尝试”
(空)。最好从对象中删除属性。但我不明白你的问题,到底是什么问题?如果请求符合预期,听起来后端可能会出现问题?因为您将其设置为未定义
,未定义
值不会被包括/发送。@PatrickEvans使用此语句替换原始值。现在我应该设置什么?这取决于您需要设置的API,但您可以尝试空字符串。未定义和空值参数将不会发送到请求!请改为尝试”
(空)。。