var obtn = document.getElementsByTagName('button'); //为button元素绑定单击事件 obtn[0].onclick = function(){ //获取输入的用户名和密码 var username = document.getElementById("username").value; var password = document.getElementById("pwd").value; //定义data对象。储存用户名和密码 var data = { username: username, password: password }; var data = encodeURIComponent(JSON.stringify(data)); //创建AJAX对象 var xhr = new XMLHttpRequest(); //调用AJAX的open()方法, 初始化http请求 xhr.open('POST','http://localhost:3000/login'); //设置请求头 xhr.setRequestHeader('Content-Type','application.json; charset=UTF-8'); //onreadystatechange事件处理函数 xhr.onreadystatechange = function(){ if (xhr.readyState ===4 ){ //接收服务器的响应数据 var data = JSON.parse(decodeURIComponent(xhr.responseText)); alter (data.msg); } }; //发送请求 xhr.send(data); };
时间: 2024-02-10 10:19:38 浏览: 159
根据您提供的代码,我看到了以下几个问题:
1. 在设置请求头时,应该使用 'application/json',而不是 'application.json'。
2. 在发送请求之前,应该先调用 `xhr.setRequestHeader()` 方法来设置请求头。
3. 在接收服务器响应时,应该检查 `xhr.status` 是否为 200,以确保服务器成功响应。
下面是修改后的代码:
```
var obtn = document.getElementsByTagName('button');
obtn[0].onclick = function() {
var username = document.getElementById("username").value;
var password = document.getElementById("pwd").value;
var data = {
username: username,
password: password
};
var dataStr = encodeURIComponent(JSON.stringify(data));
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var data = JSON.parse(decodeURIComponent(xhr.responseText));
alert(data.msg);
}
};
xhr.open('POST', 'http://localhost:3000/login');
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.send(dataStr);
};
```
这样应该就能够避免之前提到的错误了。
阅读全文