原生JS 通过 ajax请求数据的时候控制台报500的错误,在这里记录一下,不喜勿喷哈!!!
let submit = document.getElementsByClassName("submit")[0];
submit.addEventListener("click",function(){
let answer = document.getElementById("inp1").value;
let standardAnswer = document.getElementById("inp2").value;
let data = {
"answer":"",
"standardAnswer":""
}
data.answer = answer;
data.standardAnswer = standardAnswer;
let xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else {
xhr = new ActiveXObject("Microsoft.XMLHTTP")
}
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200){
//将字符串转为json格式
let obj = JSON.parse(xhr.responseText);
if (obj.result == 1) {
result.innerText = "相似"
return;
} else if (obj.result == 0) {
result.innerText = "不相似"
return;
}else {
result.innerText = "不可检测"
}
}
}
xhr.open('POST','http://10.1.23.105:8084/question/equal-check',true);
xhr.setRequestHeader("Content-Type", "application/json");
//发送数据之前将Json数据转为字符串
xhr.send(JSON.stringify(data));
const box = document.querySelector("#math-rend-box");
const studentBox = box.children[0];
const normalBox = box.children[1];
const result = box.children[2];
studentBox.innerText = answer;
normalBox.innerHTML = standardAnswer;
// MathJax.texReset();
// MathJax.typesetClear();
MathJax.typeset();
})
从上面的代码段中,在判断 result 状态前需要通过 JSON.parse() 将字符串转为 JSON 格式后再进行判断,还有就是在 send 发送数据之前一定要将数据通过 JSON.stringify() 将 JSON 格式的数据转为字符串类型,否则没有办法请求数据,这就是控制台报500错误的原因。