<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();
}


}

我希望它会起作用;)

07-26 09:35