我一整天都在发布这个代码的不同版本(对不起!),但是提交(通过点击Enter)后它不会自动刷新页面。我试着将Submit按钮设置为一个按钮,但只有当实际单击它时才有效。
我研究了很久,但很多搜索结果都是过时的JavaScript方法。
以下内容取自我的HTML代码,其他部分都只是平常的html、head、body和CSS:
<?php
session_start();
if(!isset($_SESSION['id'])){
$_SESSION['id'] = rand(0,100);
}
?>
<div id="room">
<div id="send_cont">
<form id="chat">
<input type="text" id="msg" />
<input type="submit" id="send" value=" " />
</form>
</div>
<div id="messages">
Loading...
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
var refreshchat = function(){
$.get('ajax.php', function(data) {
$('#messages').html(data);
});
var msgs = document.getElementById('messages');
msgs.scrollTop = msgs.scrollHeight;
}
var getmsgs = self.setInterval(refreshchat,0);
$('#chat').submit(function(){
var msg = $('#msg').val();
$.post("ajax.php", { msg: msg, from: "You" },
function(data) {
$('#messages').html(data);
$('#msg').val('');
var msgs = document.getElementById('messages');
msgs.scrollTop = msgs.scrollHeight;
});
});
return false;
});
</script>
You may want to prevent the default browser behavior with the event object that can be passed to a jQuery event click handler.
Something on the order of:
$('#send').click(function(evt){
evt.preventDefault()
// perform ajax call here...
});
you can use
$('#submit').click(function(evt){
evt.preventDefault()
// perform ajax call here...
});
or
$('#submit').click(function(evt){
// perform ajax call here...
return false ;
});
$(document).ready(function() {
var refreshchat = function() {
$.get('ajax.php', function(data) {
$('#messages').html(data);
});
var msgs = document.getElementById('messages');
msgs.scrollTop = msgs.scrollHeight;
}
var getmsgs = self.setInterval(refreshchat, 0);
$('#chat').submit(function() {
var msg = $('#msg').val();
$.post("ajax.php", {
msg: msg,
from: "You"
}, function(data) {
$('#messages').html(data);
$('#msg').val('');
var msgs = document.getElementById('messages');
msgs.scrollTop = msgs.scrollHeight;
});
return false; // <--- needed here...
});
// return false; <--- not in the right place....
});