我是一个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之间进行半分割。无论如何,谢谢你的帮助。
答案 0 :(得分:2)
一个重要的调试工具是Firebug,它是Firefox的插件。
您不仅可以使用它来检查HTML,还可以查看XMLHTTP请求的内容。
安装完成后,您会在右下角看到firebug图标。打开它启用所有内容并选择NET选项卡。你可以从那里开始探索。
答案 1 :(得分:0)
此外,在IE9中,您可以使用F12来调试和查看错误。
答案 2 :(得分:0)
我看不到在该段代码中的任何地方调用sendMessage()。
答案 3 :(得分:0)
您的代码只有一个错误... document.getElementByID(“xxx”)不是方法。它是document.getElementById(“xxx”)。我尝试了你的代码 - 它回复到tinChat_process.php,参数action = newMessage,message =“无论你在那个框中输入什么......”..如果你仍然无法解决,你可以发布chatMess和ajaxBox并告诉我们如何你正在调用sendMessage()?我添加了一个按钮来测试呼叫:
<button onclick="sendMessage()">Go</button>