<input type="text" onkeyup="checkPin();" id="pin"/>
大家好,我是django的新手,我试图通过视图
def pincheck():
访问数据库,并且我正在通过javascript进行尝试,但是发生了一些错误。function checkPin(){
var pin_code=document.getElementById("pin").value;
if(pin_code.length == 6){
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("innerHTML").innerHTML=xmlhttp.responseText;
}
else if (request.status === 404) {
alert("Oh no, it does not exist!");
}
else if (request.status === 403) {
alert("Oh no, it does not exist!");
}
}
var data = "{% csrf_token %}";
xmlhttp.setRequestHeader('X-CSRF-Token', data);
xmlhttp.open("POST", "../../sellerprofile/ajaxcall/");
xmlhttp.send();
}
}
这是我的JavaScript,如果有误,请纠正我。
错误是
Uncaught InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.
最佳答案
代码的问题在于,您设置标题时并未真正打开连接,这就是为什么它提供了InvalidStateError的原因。
正确的方法是先打开连接,然后设置标题。
以下是修改后的代码。
function checkPin(){
var pin_code=document.getElementById("pin").value;
if(pin_code.length == 6){
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("innerHTML").innerHTML=xmlhttp.responseText;
}
else if (request.status === 404) {
alert("Oh no, it does not exist!");
}
else if (request.status === 403) {
alert("Oh no, it does not exist!");
}
}
var data = "{% csrf_token %}";
xmlhttp.open("POST", "../../sellerprofile/ajaxcall/");
xmlhttp.setRequestHeader('X-CSRF-Token', data);
xmlhttp.send();
}
}
我希望它会起作用;)