在 Django 中使用 JavaScript 进行 Ajax 调用

ajax call with javascript in django

本文关键字:进行 Ajax 调用 JavaScript Django      更新时间:2023-09-26
<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();
}

}

我希望它会;)工作