bod为空 我传值方式为 xhr.open(method, url) xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded') Object.keys(headers).forEach(headerkey => xhr.setRequestHeader(headerkey,headers[headerkey])) xhr.send(paramsString)
时间: 2023-07-16 19:14:51 浏览: 161
根据你提供的信息,bod为空的原因可能是你在发送请求时没有将请求体传递给服务器。xhr.send()方法只能发送GET请求,不支持POST请求,因此需要将参数作为请求体传递。可以按照以下方式修改代码:
1.使用POST方法发送请求
```javascript
xhr.open('POST', url);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
Object.keys(headers).forEach(headerkey => xhr.setRequestHeader(headerkey, headers[headerkey]));
xhr.send(paramsString);
```
2.将参数作为请求体传递
```javascript
xhr.open('POST', url);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
Object.keys(headers).forEach(headerkey => xhr.setRequestHeader(headerkey, headers[headerkey]));
xhr.send(JSON.stringify({bod: paramsString}));
```
这样,服务器就能正确地解析请求体中的参数了。
相关问题
var xhr = new XMLHttpRequest(); xhr.open('POST', 'save_table.php'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('data=' + encodeURIComponent(data));
这段代码是使用XMLHttpRequest对象向服务器发送POST请求并传递数据的示例。下面是代码的详细解释:
1. `var xhr = new XMLHttpRequest();`:创建XMLHttpRequest对象的实例,该对象用于发送HTTP请求和接收HTTP响应。
2. `xhr.open('POST', 'save_table.php');`:初始化HTTP请求参数。在这里,我们使用POST方法向名为save_table.php的服务器端脚本发送请求。
3. `xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');`:设置HTTP请求头。在这里,我们设置请求的内容类型为application/x-www-form-urlencoded,表示我们将发送表单数据。
4. `xhr.send('data=' + encodeURIComponent(data));`:发送HTTP请求。在这里,我们将data参数的值编码为URL编码格式,并将其作为请求的主体发送到服务器端脚本。这里的data参数表示要传递给服务器端脚本的数据。
总的来说,这段代码用于向服务器端脚本发送POST请求并传递数据,可用于通过AJAX技术更新网页的内容。
'Content-Type': 'application/x-www-form-urlencoded'设置请求头
在前端使用 Ajax 进行 application/x-www-form-urlencoded 参数提交时,可以通过设置请求头的方式指定 Content-Type 为 application/x-www-form-urlencoded。
下面是一个示例代码,展示如何设置请求头:
```javascript
var xhr = new XMLHttpRequest();
var url = "your-url";
var params = "param1=value1¶m2=value2"; // 参数拼接成字符串
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 请求完成并成功处理
var response = xhr.responseText;
console.log(response);
}
};
xhr.send(params);
```
在上述代码中,`xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")` 这一行设置了请求头的 Content-Type 为 application/x-www-form-urlencoded。这样服务器就能正确地解析请求参数。
请注意,这是一种常见的用法,但在实际开发中,可能还需要根据具体情况进行其他的处理,比如对参数进行编码、处理错误等。因此,请根据实际情况进行相应的调整。
阅读全文