我整天都在发布此代码的不同版本(抱歉!)。 我现在尝试这样做,当你提交(通过按Enter键)时,它不刷新页面。我尝试将提交按钮设置为按钮,但这只适用于你实际点击它。
我一直在做研究,但我的很多结果都是过时的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>
答案 0 :(得分:1)
您可能希望使用可以传递给jQuery事件单击处理程序的事件对象来阻止默认浏览器行为。
大概的顺序:
$('#send').click(function(evt){
evt.preventDefault()
// perform ajax call here...
});
答案 1 :(得分:0)
你可以使用
$('#submit').click(function(evt){
evt.preventDefault()
// perform ajax call here...
});
或
$('#submit').click(function(evt){
// perform ajax call here...
return false ;
});
答案 2 :(得分:0)
$(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....
});