post请求是一个简单的消息,其中包含从表单中重新获取的两个参数。 当我发送表单时,我被重定向但是没有调用回调函数(控制台中应该有一条消息)。 有任何想法吗?铬合金工作正常......
<form action="#" method="post">
<input type="text" id="message" size="27">
<input style="display:none;" type="text" id="pseudo" size="27" value="<?php echo '<span class=chatType>[' . $_SESSION['type'] . ']</span><span class=chatPseudo> ' . $_SESSION['pseudo'] . '</span>'; ?>">
<button type="submit" id="envoyer" title="Envoyer" class="sendbutton">Send</button>
</form>
</fieldset>
<script>
$(function() {
afficheConversation();
$('#envoyer').click(function() {
var message = $('#message').val();
var pseudo = $('#pseudo').val();
$.post('/../chat.php', {
'message': message,
'pseudo': pseudo,
async:false
}, function () {
console.log('message sent : '+message);
$('#message').val('');
afficheConversation();
});
答案 0 :(得分:0)
问题是因为您在不停止该事件的情况下将事件处理程序附加到submit
按钮的单击,因此form
仍在提交,这反过来又会中止您的AJAX请求它正在进行中。
要修复此问题并使逻辑语义化,请挂钩submit
的{{1}}事件,然后对传递的事件调用form
以停止提交。像这样:
preventDefault()
另请注意,看起来您尝试使请求同步,但语法不正确,因此设置无效。请注意,这是一个非常糟糕的解决方案,永远不应该使用。浏览器甚至会警告你。使用带有回调模式的异步调用是实现此处尝试的最佳方式。