Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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
网页A中的PHP触发器从网页B上的数据库加载内容_Php_Ajax - Fatal编程技术网

网页A中的PHP触发器从网页B上的数据库加载内容

网页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

我正在建立一个聊天室,一切正常

当某人在文本区域中键入消息并单击HTML表单的发送按钮时,PHP将其发送到服务器

<?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);
    });
}