Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数中的Javascript调用函数不工作_Javascript_Jquery_Function - Fatal编程技术网

函数中的Javascript调用函数不工作

函数中的Javascript调用函数不工作,javascript,jquery,function,Javascript,Jquery,Function,我正在尝试创建一个非常简单的聊天系统,它可以自动刷新并在用户提交新的聊天信息时刷新 我目前有两个功能-一个用于提交新消息、清除表单和刷新聊天(使用下一个功能),名为clearchat(): 然后另一个刷新聊天,该聊天在clearchat()运行时应调用,并且每隔3秒使用一个间隔调用一次: function refreshchat() { $('#qcwindow').load(document.URL + ' #qctext'); $('#chatwindow').load(d

我正在尝试创建一个非常简单的聊天系统,它可以自动刷新并在用户提交新的聊天信息时刷新

我目前有两个功能-一个用于提交新消息、清除表单和刷新聊天(使用下一个功能),名为
clearchat()

然后另一个刷新聊天,该聊天在
clearchat()
运行时应调用,并且每隔3秒使用一个间隔调用一次:

function refreshchat() {
    $('#qcwindow').load(document.URL +  ' #qctext');
    $('#chatwindow').load(document.URL +  ' #chattext');
    var chatwindow = document.getElementById('chatwindow');
    var difference = chatwindow.scrollHeight - chatwindow.scrollTop;
    if(difference < 750) {
        chatwindow.scrollTop = chatwindow.scrollHeight;
    }
}
函数refreshchat(){
$('#qcwindow').load(document.URL+'#qctext');
$('chatwindow').load(document.URL+'chattext');
var chatwindow=document.getElementById('chatwindow');
变量差异=chatwindow.scrollHeight-chatwindow.scrollTop;
如果(差值<750){
chatwindow.scrollTop=chatwindow.scrollHeight;
}
}
此函数将新的聊天信息加载到DIV中,然后将其滚动到DIV的底部,除非用户已手动从DIV的底部滚动

这两个功能分别工作。我遇到的问题是,当用户提交新消息时,它会提交表单并清除表单,但不会刷新聊天记录。不过,聊天仍然会每3秒钟自动刷新一次。但我希望用户的新消息立即显示出来

我一辈子都不明白为什么
clearchat()
函数中的
refreshchat()
函数没有被调用

任何帮助都将不胜感激。谢谢

更新:


我已经将
console\u log(“refreshed”)
添加到
refreshchat()
函数中,每次都会通过手动输入和自动刷新将其添加到日志中,但div实际上只在自动刷新时更新。

当您将表单提交到iframe时,在更新UI之前,应该等待post完成。您可以通过侦听表单目标iframe的加载事件来知道表单已完成提交。

如果从程序中删除自动3秒刷新,会发生什么情况?它是否正确刷新(当然,只有在您提交消息时才刷新)?问题是ajax不是立即完成的,如果您希望用户发送的消息立即弹出,您可能必须手动更改聊天框的html内容以包含该消息,使其看起来像是立即退出。@Katana314-Hmm。。当我删除自动3秒间隔时,它会在大约75%的时间内自动加载信息,但不是每次都自动加载。您应该在提交到的iframe上设置加载侦听器,并在完成后调用refreshchatreloading@JuanMendes-这似乎奏效了。有没有办法把这个标记为正确答案?我想chris97ong和JanR关于ajax被推迟的说法是对的。。在这和实际提交表格之间。这暂时解决了我的问题,直到我能想出更好的解决方案。非常感谢。这很有效。将事件侦听器添加到调用
refreshchat()函数的iframe加载中。现在一切正常。
function refreshchat() {
    $('#qcwindow').load(document.URL +  ' #qctext');
    $('#chatwindow').load(document.URL +  ' #chattext');
    var chatwindow = document.getElementById('chatwindow');
    var difference = chatwindow.scrollHeight - chatwindow.scrollTop;
    if(difference < 750) {
        chatwindow.scrollTop = chatwindow.scrollHeight;
    }
}