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

时间:2017-06-18 20:06:50

标签: php ajax

我正在建立聊天,一切正常。

当人A在textarea中键入消息并单击HTML表单的SEND按钮时,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> 
    }
?>

(我不发布PHP代码,因为它与问题无关)

人B获取消息是因为javascript setInterval触发了一个函数,该函数通过AJAX从数据库中获取聊天内容,然后在div中显示人B的聊天内容。

setInterval(refreshChat, 1000);
function refreshChat() {
    $.ajax({
        url: "http://eyesonpi.com/_/php/chat.php",
        type: "post",
        success: function(data) {
        $("#chatWindow").html(data);
        },
        error: function() {
        $("#chatWindow").prepend("Error");
        }
        });
    }

当我在iPhone上运行IOS 10时,AJAX调用失败。 IOS 10存在AJAX问题。 https://forums.developer.apple.com/thread/64526

我尝试使用普通的Javascript(xmlHttpRequest)和jQuery。

我从我的iPhone尝试了我的托管公司的聊天窗口,他们的聊天工作。我不知道从哪里开始解决方法。 B人如何在没有重新加载页面的情况下从A人那里获取消息?有什么建议吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用websockets进行聊天。或者是长池技术,它允许在服务器和客户端(浏览器或移动应用程序)之间保持连接。 如果你选择websockets然后你可以尝试在服务器端使用: WorkermanRatchet。两者都完美无缺。所有现代浏览器本身都支持websocket,或者您可以使用像sockJS这样的流行库来支持跨浏览器。

答案 1 :(得分:0)

尝试将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);
    });
}