0

我是一个 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 调试方法不起作用,因为它们包含带有死消息或 vardumping 预期值等的半分割问题区域 - 所有这些在页面加载后都不会真正显示,对吗?所以这让我无法在它是 PHP 或 javascript 之间进行一半分割。无论如何,感谢您的帮助。

4

4 回答 4

2

一个重要的调试工具是Firebug,它是 Firefox 的一个插件。

您不仅可以使用它来检查您的 HTML,还可以使用它来查看您的 XMLHTTP 请求发生了什么。

安装后,您会在右下角看到萤火虫图标。打开它启用一切并选择 NET 选项卡。你可以从那里开始四处寻找。

于 2011-03-29T03:43:16.130 回答
0

我看不到 sendMessage() 在那段代码的任何地方被调用。

于 2011-03-29T04:29:48.423 回答
0

您的代码只有一个错误... document.getElementByID("xxx") 不是方法。它是 document.getElementById("xxx")。我试过你的代码——它用参数 action = newMessage 和 message = "Whatever you type in that box..." 发回 tinChat_process.php。如果你仍然无法解决,你可以发布 chatMess 和 ajaxBox 并告诉我们如何您正在调用 sendMessage()?我添加了一个按钮来测试通话:

<button onclick="sendMessage()">Go</button>
于 2011-03-29T04:51:13.830 回答
0

此外,在 IE9 中,您可以使用 F12 来调试和查看错误。

于 2011-03-29T03:47:24.687 回答