我正在制作聊天脚本并希望对其进行编码,以便在用户提交消息时,脚本将运行chat_new.php
,然后刷新#cbox
。我使用下面的代码尝试完成此操作,但不幸的是它不会重新加载。只是为了排除它,我测试没有任何jQuery和chat_new.php
执行没有问题,所以它绝对是我的ajax脚本。另外,getUpdates()
可以自行完成。我通过ajax发布新消息时遇到问题。
<div id="cbox" align="left">
<script>
$(document).ready(function() {
setInterval(function() {
getUpdates()
}, 2000);
});
function getUpdates() {
$("#cbox").load("/lib/chat_post.php");
}
$("#submitmsg").click(function() {
$.ajax({
type: 'POST',
url: '/lib/chat_new.php',
data: {
submitmsg: 'submitmsg',
usermsg: 'usermsg'
},
success: function() {
getUpdates()
}
});
});
</script>
</div>
<form name="message" method='post' id="cbox_input">
<input name="usermsg" id='usermsg' type="text" size="63" maxlength="255" />
<input name="submitmsg" id='submitmsg' type="submit" />
</form>
答案 0 :(得分:1)
这可能很简单,就是从脚本的第三行移动});
到</script>
之前,这样你的函数和ajax调用都在$(document).ready(...
内,因此只能得到加载DOM后处理,所有HTML元素都在页面上。
答案 1 :(得分:1)
几个问题:
您的点击处理程序在它引用的元素之前存在,并且不在document.ready
内。因此它无法找到元素并且永远不会被绑定到它
修复后,您需要阻止默认表单提交过程。否则页面将在提交时重新加载
// put this inside ready()
$("#submitmsg").click(function (event) {
event.preventDefault();
//other code
})