2016-05-09 6 views
0
<input type="text" onkeyup="checkPin();" id="pin"/> 

hallo alle Ich bin neu in django und ich versuche, Datenbank zuzugreifen, indem Ansichten def pincheck(): und ich versuche, dies durch Javascript, aber ther ist ein Fehler aufgetreten ist.Ajax-Aufruf mit Javascript in django

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

das ist mein Javascript Bitte korrigieren Sie mich wenn falsch. der Fehler Uncaught InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.

+3

Verwendung jquery .. es ist einfach, sauber .. einfach .. –

+0

ich nicht jquery verwenden könnte .. –

+1

ich habe Vanille verwenden js –

Antwort

2

Das Problem mit Ihrem Code ist, dass Sie den Header setzen, ohne tatsächlich die Verbindung zu öffnen, das ist, warum es wird InvalidStateError geben. Der richtige Weg ist, zuerst die Verbindung zu öffnen und dann den Header zu setzen. Unten ist Ihr geänderter Code.

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

}

Ich hoffe, es funktioniert;)

+0

Vielen Dank für diese Informationen ... jetzt funktioniert es gut ... :) –

Verwandte Themen