网页A中的PHP触发器从网页B上的数据库加载内容
我正在建立一个聊天室,一切正常 当某人在文本区域中键入消息并单击HTML表单的发送按钮时,PHP将其发送到服务器网页A中的PHP触发器从网页B上的数据库加载内容,php,ajax,Php,Ajax,我正在建立一个聊天室,一切正常 当某人在文本区域中键入消息并单击HTML表单的发送按钮时,PHP将其发送到服务器 <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // collect textarea content // inserted (appended) to mySQL table. // collect chat content in mySQL table // display chat c
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect textarea content
// inserted (appended) to mySQL table.
// collect chat content in mySQL table
// display chat content in a <div>
}
?>
当我在iPhone上运行ios10时,AJAX调用失败了。IOS 10在AJAX方面存在问题。
我尝试使用纯Javascript(xmlHttpRequest)和jQuery
我试着从我的iPhone和他们的聊天工具中打开我的托管公司的聊天窗口。我不知道从哪里开始解决问题。人员B如何在不重新加载页面的情况下从人员A获取消息?有什么建议吗
谢谢。您可以试着用它来聊天。或长池技术,允许在服务器和客户端(浏览器或移动应用程序)之间保持连接。
如果您选择WebSocket。然后,您可以尝试在服务器端使用:
或者,两者都完美地完成了他们的工作。所有现代浏览器都本机支持websocket,也可以使用流行的库(如sockJS)来支持跨浏览器 尝试将
setInterval
替换为setTimeout
行为,否则,如果提交下一个请求,将终止上一个请求
setTimeout(refreshChat, 0);
function refreshChat() {
$.ajax({
url: "http://eyesonpi.com/_/php/chat.php",
type: "post",
success: function (data) {
$("#chatWindow").html(data);
},
error: function () {
$("#chatWindow").prepend("Error");
}
}).always(function () {
setTimeout(refreshChat, 1000);
});
}
所以它可以在其他设备上工作,但不能在你的手机上工作?是的,甚至是旧的IOS版本。它运行在安卓系统上,除了IOS 10之外,没有任何问题。IOS 10刚刚有一个更新,他们没有修复它。我希望他们不要等到IOS 11才这么做。@Kobbe你用xmlHttpRequest试过了吗?是的,用普通javascript和jQuery都试过了。打这个电话需要60秒以上吗?这似乎是你提供的链接中讨论的问题。听起来很有趣。我将对此进行研究,但正如我刚才在上面的评论中所说的,我只是想到了一个Javascript setTimeout函数,该函数使用$(“#myForm”).submit()发送表单;textarea是否有内容并不重要。它将触发PHP并刷新聊天。如果这比你的建议更简单、更快,那么我想这会解决它。但我现在会看看你的建议。那是个愚蠢的想法:-(由于新输入的文本在发送时没有单击“发送”按钮,因此没有时间键入。好的,现在听你的建议。好的,我只是快速阅读了一下,解决方案是websockets。谢谢Nurik。可能您当前的问题发生了,因为您试图将xmlHttpRequest发送到服务器,这不允许跨源资源共享(也称CORS)?无论如何,websockets或长池是构建聊天的更好方法。除了IOS 10之外,它在AJAX上运行得很好,但我会接受你的建议。这可能是一些聊天服务所使用的,比如LivePerson,因为我可以从我的iPhone与我的托管公司进行聊天。非常感谢你抽出时间,非常感谢你。
setTimeout(refreshChat, 0);
function refreshChat() {
$.ajax({
url: "http://eyesonpi.com/_/php/chat.php",
type: "post",
success: function (data) {
$("#chatWindow").html(data);
},
error: function () {
$("#chatWindow").prepend("Error");
}
}).always(function () {
setTimeout(refreshChat, 1000);
});
}