Javascript - Не уверен, что мой AJAX правильный, нет ошибок, но нет записей в БД - PullRequest
0 голосов
/ 29 марта 2011

Я - парень по PHP и совершенно новичок в javascript. Я пытаюсь добавить небольшую простую программу чата AJAX на сайт, который я создаю. Проблема в том, что я не знаю, как проверить, были ли отправлены мои запросы или проблема в PHP. Если это PHP, я могу это исправить, если это javascript, вот для чего этот вопрос. Я не получаю никаких ошибок, но я также не получаю сообщений чата в моей базе данных. Вот мой JavaScript на странице чата:

<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 или javascript. В любом случае, спасибо за любую помощь.

Ответы [ 4 ]

2 голосов
/ 29 марта 2011

Одним из важных инструментов отладки является Firebug , который является плагином для Firefox.

Вы можете использовать его не только для проверки своего HTML, но и для наблюдения за тем, что происходит с вашимЗапрос XMLHTTP.

После установки в правом нижнем углу вы увидите значок firebug.Откройте его, включите все и выберите вкладку NET.Оттуда можно начать ковыряться.

0 голосов
/ 29 марта 2011

В вашем коде есть только одна ошибка ... document.getElementByID ("xxx") не является методом.Это document.getElementById ("xxx").Я попробовал ваш код - он отправляет обратно в tinChat_process.php с параметрами action = newMessage и message = "Что бы вы ни печатали в этом поле ..." .. Если вы все еще не можете разрешить, вы можете опубликовать chatMess и ajaxBox и рассказать нам, каквы вызываете sendMessage ()?Я добавил кнопку для проверки звонка:

<button onclick="sendMessage()">Go</button>
0 голосов
/ 29 марта 2011

Я не вижу, чтобы sendMessage () вызывался где-либо в этом фрагменте кода.

0 голосов
/ 29 марта 2011

Кроме того, в IE9 вы можете использовать F12 для отладки и просмотра ошибок.

...