2011-03-29 2 views
0

나는 PHP 녀석이며 Javascript에 새롭다. 내가 만들고있는 웹 사이트에 간단한 AJAX 채팅 프로그램을 추가하려고합니다. 문제는 내 요청이 전송되었는지 또는 문제의 PHP 뒤에 있는지 테스트하는 방법을 모르겠다는 것입니다. 그것이 PHP라면 제가 고칠 수 있습니다. 자바 스크립트라면,이게이 질문에 대한 것입니다. 어떤 오류도 발생하지 않지만 내 데이터베이스에도 채팅 메시지가 나타나지 않습니다. 채팅 페이지에서 내 자바 스크립트는 다음과 같습니다.Javascript - 내 AJAX가 맞는지, DB 항목이 없는지 알 수 없음

<script type="text/javascript"> 
var xmlhttp; 
var newChatMessage; 
window.onunload=function() { 
    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.open("POST","tinChat_process.php",true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send("action=pageClose"); 
}; 
function loadChat() { 
    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.open("POST","tinChat_process.php",true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send("action=grabChat"); 
    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("ajaxBox").innerHTML=xmlhttp.responseText; 
      } 
     } 
    t=setTimeout("loadChat()",5000); 
    } 
function sendMessage() { 
    newChatMessage = "action=newMessage&message=" + document.getElementByID("chatMess").value; 
    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.open("POST","tinChat_process.php",true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send(newChatMessage); 
    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("ajaxBox").innerHTML=xmlhttp.responseText; 
      } 
     } 
    } 
loadChat(); 
</script> 

코드를 작성하는 더 좋은 방법이 있지만 누구도 오류를 볼 수 있습니까? 내 평범한 PHP 디버깅 방법은 다이 메시지 나 예상 값을 반으로 나누는 문제 영역으로 구성되어 있기 때문에 작동하지 않습니다. 페이지가로드 된 후 실제로 표시되지 않는 것은 무엇입니까? 따라서 PHP 나 자바 스크립트 사이의 절반을 나눌 수 없습니다. 어쨌든 어떤 도움을 주셔서 감사합니다.

+1

jQuery에서 1 시간 크래시 과정을 통해 도움을 받으십시오. 그것은 당신에게 시간의 작업을 저장합니다. http://docs.jquery.com/Tutorials –

답변

2

하나의 중요한 디버깅 도구는 Firefox 용 플러그인 인 Firebug입니다.

HTML을 검사하는 데 사용할 수있을뿐 아니라 XMLHTTP 요청으로 진행되는 작업을 볼 수도 있습니다.

설치되면 오른쪽 하단 모서리에 방화 아이콘이 표시됩니다. 모든 항목을 열고 NET 탭을 선택하십시오. 거기서부터 시작될 수 있습니다.

+0

감사합니다. 감사합니다. – linus72982

+0

좋아요, 나는 방화 광명을 설치했고 getElementByID ("ajaxBox")가 null이되었으므로 ajaxBox div가로드되기 전에 스크립트를 너무 일찍 시작했다고 상상해 보았습니다. 그래서 loadChat에 대한 호출을 ajaxBox div - 이제 방화 광에서 더 이상 오류가 없지만 여전히 데이터베이스 항목이 없으므로 결과적으로 내 PHP에 맞는 결과를 얻게됩니다. – linus72982

0

또한 IE9에서 F12를 사용하여 오류를 디버그하고 볼 수 있습니다.

+0

범죄는 없지만 IE는 오래 전 저에게 다리를 불 태웠습니다. 표준을 고수하지 못해서 코딩하는데 50 시간의 시간을 썼습니다. – linus72982

+0

IE에서만 오류가 발생하는 경우에만 IE 디버거를 사용합니다. –

+0

방화 광> F12, 동의 함. 거기에 논쟁이 없습니다. 그러나 나는 그것을 약간의 성공과 함께 기본적인 것들에 사용했습니다. – addfasdf

0

sendMessage()가 코드 일부에서 호출되는 것을 볼 수 없습니다.

0

코드에 오류가 하나뿐입니다 ... document.getElementByID ("xxx")는 메소드가 아닙니다. document.getElementById ("xxx")입니다. 나는 당신의 코드를 시도했다 - 매개 변수 action = newMessage와 message = "그 상자에 무엇을 입력하든간에 ..."으로 tinChat_process.php에 다시 게시한다. 여전히 해결할 수 없다면 chatMess와 ajaxBox를 게시하고 sendMessage()를 호출하고 있습니까? 전화를 테스트 할 수있는 버튼을 추가했습니다.

<button onclick="sendMessage()">Go</button> 
+0

sendMessage()는 페이지의 앞 부분에있는 제출 버튼의 onclick 속성에서 호출됩니다. 채팅 객체가 있고, 채팅 객체는 displayInterface 함수를 가지고 있으며, 페이지는이를 호출하고 채팅 인터페이스를 표시합니다. chat div의 ajax 리로드에서 displayInterface에 인수가 다시로드되고 입력 텍스트 상자가 아니라 채팅 및 사용자 부분 만 다시 표시된다는 식의 인수를 보내면 재로드가 발생하면 입력이 중단되지 않습니다. 5 초마다. – linus72982

관련 문제