2011-12-30 6 views
-1

채용 후보 목록을 표시하는 간단한 응용 프로그램을 작성한 후 채용 버튼을 클릭하면 새로 고용 된 후보를 반영하도록 데이터베이스를 변경하고 나머지는 미혼으로 표시해야합니다. 그러나 기능이 제대로 작동하지 않습니다. 내가 겪고있는 문제는 AJAX 함수가 결코 응답을 제공하는 것 같지 않고 왜 그럴 수 없는지입니다. 데이터베이스가 업데이트되지 않습니다. 내 파일은 아래에 있습니다. 이 AJAX 기능이 제대로 작동하지 않는 이유는 무엇입니까?

라인 document.getElementById("errors").innerHTML+=xmlhttp.readyState+" "+xmlhttp.status+"<br>";

는 상기 readyState 4 인 것을 나타내는 제 HTML 페이지의 하단에 DIV를 갱신하고 status는 AJAX 기능이 제대로 반환하지만 echo 'D 응답이없는 것을 의미한다 (200)이며 표시됩니다. new_hire.php 파일에서 모든 코드를 제거하고 단순히 파일 echo "hello";을 만들었더라도 responseText에는 아무 것도 반환되지 않습니다.

resumes.php :

<html> 

<head> 

<script type="text/javascript"> 
function new_hire(name){ 
    var xmlhttp; 
    if (window.XMLHttpRequest){ 
    xmlhttp=new XMLHttpRequest(); 
    } 
    else{ 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function(){ 
    document.getElementById("errors").innerHTML+=xmlhttp.readyState+" "+xmlhttp.status+"<br>"; 

    //this line, when removed, does not change anything. I left it in for debugging purposes. 
    document.getElementById("errors").innerHTML+=xmlhttp.responseText; 

    if (xmlhttp.readyState=4 && xmlhttp.status=200){ 

     var others = xmlhttp.responseText.split("|"); 

     for (i=0;i<others.length;i++){ 
     tag = others[i].replace(" ","_"); 

     document.getElementById(tag).innerHTML=""; 
     } 
    } 
    } 

    xmlhttp.open("POST","new_hire.php",true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send("hiree="+name.replace(" ","%20")+"&position=Salespeople"); 

    var name_tag = name.replace(" ","_"); 

    document.getElementById(name_tag).innerHTML="(Current Employee)<br>"; 
} 
</script> 

</head> 

... 

</html> 

new_hire.php (AJAX 응답 파일) :

<?php 

$hiree = $_POST['hiree']; 
$pos = $_POST['position']; 


$con = mysql_connect("host.name","user","pass") or die('Could not connect: ' . mysql_error()); 
mysql_select_db("dbname",$con); 

$clear = mysql_query("UPDATE $pos SET employed=false WHERE 1=1;"); 
mysql_fetch_array($clear); 

$reset = mysql_query("UPDATE $pos SET employed=true WHERE Name='$hiree';"); 
mysql_fetch_array($reset); 

$people = mysql_query("SELECT Name FROM $pos WHERE employed=false;"); 
$array = array(); 

while ($row = mysql_fetch_array($people)){ 
    array_push($array,$row['Name']); 
} 

mysql_close($con); 

$response = join("|",$array); 
echo $response; 

?> 
+0

읽기 전에 readText 읽을 수 없습니다 4. – epascarello

+0

나는 그것을 이해하려고 시도하는 라인을 삭제할 때 변경이 없다는 것을 이해한다. 틀린 다른 것이 있어야합니다. – ewok

+0

"if (xmlhttp.readyState = 4 && xmlhttp.status = 200) {"블록에 responseText 행을 입력하면 어떻게됩니까? –

답변

1

당신이 문은 비교 연산자 == 아니라 할당 연산자 =를 사용하지 않을 경우주의하시기 바랍니다 그래서 당신이 사용하고 있습니다 : 대신 if (xmlhttp.readyState=4 && xmlhttp.status=200)if (xmlhttp.readyState==4 && xmlhttp.status==200)

관련 문제