Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义的参数属性将在HTTP请求负载中清除_Javascript_Http - Fatal编程技术网

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,但您可以尝试空字符串。未定义和空值参数将不会发送到请求!请改为尝试
(空)。。