【问题标题】:PHP - Post to Self without refreshing (Or another alternative)PHP - 发布到自我而不刷新(或另一种选择)
【发布时间】:2016-12-30 04:47:05
【问题描述】:

晚安 SO 社区,

我正在尝试为我的网站网络构建一个全球聊天系统。换句话说,工作人员可以登录 www.myadminswebsite.com 并查看我们所有其他外部站点的实时聊天系统。我的系统运行良好,除了每次用户提交新消息时页面都会刷新。我可以做些什么来避免刷新页面以提交消息?目前,我正在使用一个向自身发布的 HTML 表单,然后页面检查 $_POST["var"] 是否存在,然后写入 IM 日志文件。

来自 HTML 表单的代码

<form method='POST' action='" . $_SERVER['PHP_SELF'] . "'>
    <input type='text' name='newMSG' id='lcTextInput' placeholder='Type a Message'>
    <input type='submit' value='Send'>
</form>

处理 POST 的函数

if (isset($_POST['newMSG'])) {
    $wHandle = fopen($lFile, "a");
    fwrite($wHandle, "[CUSTOMER] " . $_POST['newMSG'] . "\n");
    fclose($wHandle);
}

除了刷新页面之外,这就是我需要它做的事情。如果您需要更多信息或有任何想法,请告诉我!

提前致谢,

提姆

【问题讨论】:

标签: javascript php html post refresh


【解决方案1】:
<form> 
<input type='text' name='newMSG' id='lcTextInput' placeholder='Type a Message'>
    <input type='submit' value='Send' id="submit">

</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script>
$('#submit').click(function()
{
var message=$("#lcTextInput").val();
    $.ajax({
        url: "msg.php", 
        type:'POST',
        data:
        {
            action: 'addmsg',
            message: message
        },
        success: function(msg)
        {
            $(".li").append(message);
        }               
    });

return false;
});

</script>

【讨论】:

  • 您必须将提交类型设置为按钮或根据操作将值保存到数据库中
  • 可以在没有提交按钮的情况下完成吗?例如,用户只是按回车键?
  • 不幸的是,这仍在刷新我的页面。
  • 使用&lt;button&gt;元素代替实际的提交按钮,可以绑定回车键并调用ajax函数
  • 嗨,请立即删除表单然后尝试
【解决方案2】:

将您的表单操作更改为:

<form method='POST' action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type='text' name='newMSG' id='lcTextInput' placeholder='Type a Message'>
    <input type='submit' value='Send'>
</form>

【讨论】:

  • 感谢您的快速回复。这段代码已经带有 PHP Echo 语句,这就是为什么它的格式与上面的代码一样,省略了 和 echo 语句。
  • 我的错。应该假设
【解决方案3】:

$('#submit').click(function()
{
var message=$("#lcTextInput").val();
    $.ajax({
        url: "msg.php", 
        type:'POST',
        data:
        {
            action: 'addmsg',
            message: message
        },
        success: function(msg)
        {
            $(".li").append(message);
        }               
    });

return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form> 
<input type='text' name='newMSG' id='lcTextInput' placeholder='Type a Message'>
    <input type='submit' value='Send' id="submit">

</form>

【讨论】:

  • @Hitesh 是的,这很好,你必须在你的系统中添加检查它
  • 谢谢,我去系统看看!!!由于您共享代码 sn-p,我认为它也应该在那里工作
猜你喜欢
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 2017-07-02
  • 2012-03-15
  • 2011-07-19
  • 2011-12-29
相关资源
最近更新 更多