我通过jQuery,ajax和php进行了一些聊天,概念是:
$.post()
发送给 chat.php 当我和WAMP在当地时,一切都很好,但是一旦我把它放到Github上,在线测试无法正常工作,在Chrome中,它显示:
无法加载资源:服务器响应状态为405 (不允许的方法)
我找到了很多答案,但它对我不起作用,仍然不明白为什么。
以下是Chat,(对话历史记录是我自己进行的本地测试)
以下是Files
我也把代码放在这里。
html:
<div id="container">
<fieldset>
<legend>Chat 聊天</legend>
<div id="list_messages">
<div id="messages"></div>
</div>
<div id="zone_input">
<input id="nom" type="text" size="10" value="pseudo(名字)">
<input id="message" size="30" type="text">
<button id="send" title="send"><img src="send.png" alt="send"/></button>
</div>
</fieldset>
</div>
jQuery:
$(function (){
afficher();
function afficher (){
// load the page htm to show the dialogue
$('#messages').load('ac.htm');
};
// send the message to php then transfer to htm by php
function envoyer (){
var nom = $('#nom').val();
var message = $('#message').val();
$.post(
'chat.php',
{'nom' : nom, 'message' : message},
afficher
);
$('#message').val('').focus();
}
// clic on the send button
$('#send').click(function (){
envoyer();
});
// type "enter"
$(document).keyup(function (e){
if (e.which == 13) {
envoyer();
};
});
// update the dialogue every one second
setInterval(afficher, 1000);
});
php:
<?php
$nom = $_POST['nom'];
$message = $_POST['message'];
$ligne = '<div class="ligne"><span class="nom">' . $nom . ' : </span><span class="message">' . $message . '</span></div>';
$leFichier = file('ac.htm');
array_unshift($leFichier, $ligne);
file_put_contents('ac.htm', $leFichier);
?>
问题1 :那么如何使其有效?
问题2 :使这个聊天是OpenClassroom的在线课程,所以老师的代码说,在jQuery结束时,我们需要setInterval()
不时更新对话,这使得发送消息延迟,如果我删除setInterval()
,没有更多延迟,但这意味着我只能看到通过刷新页面从其他用户更新的对话,如果从手机聊天更糟,没办法刷新,那么如何才能摆脱这种延迟呢?