【问题标题】:How to execute a php script after submit without ajax?如何在没有ajax的情况下提交后执行php脚本?
【发布时间】:2019-06-06 14:08:50
【问题描述】:

我实际上正在使用需要一些时间来执行的 PHP 脚本。 它每秒都会回显字符串,比如说 1 分钟。 我想要做的是将这些字符串“回显”到我的 HTML 页面中。 当我在我的页面中调用我的函数时,它运行良好,它在页面加载时执行,并且每秒回显一个字符串:

<h1> Here is my func </h1>
<?php my_func();?>

但我不想在发送表单时显示此内容(因为我将使用表单作为函数的参数)。 所以我尝试了这样的事情:

<form method="POST" action="">
  <input name='param' value='param'type='text'/>
</form>
<script>
  $.ajax({
    url:'phpfileWithMyFunc.php',
    data: {
      param : param
    },
    dataType: 'json',
    type:'post'
  )}.done(function (data){
    $('body').append(data);
  });
</script>

这个根本不起作用,不知道为什么。 所以我尝试了其他方法,$.post

<form method="POST" action="">
  <input name='param' value='param'type='text'/>
</form>
<script>
  $('#form').submit(function () {
    $.post('phpfileWithMyFunc.php', { param: param }, function(result) {
      $('tbody').append(result);
    });
    return false;
   });
</script>

最后,这个可行,但我的 php 文件必须完成他的执行(在我的情况下等待 1 分钟),才能产生我的结果。

所以我在这里问,当我在我的 HTML 文件“内部”执行我的 PHP 文件时,有什么办法可以做,所以每次我回显一个字符串时,它都会立即显示在我的 HTML 上(在我的情况下是每秒),而不是等待我的脚本结束?

感谢您的帮助。

【问题讨论】:

  • 浏览器(显示 HTML 的地方)没有连接到服务器(PHP 的地方),就像驱动程序连接到汽车一样。这种连接更像是操作无人机——操作员只是远程连接到无人机。这意味着您不能指望控制器上的开关会立即影响无人机——信号必须发送到无人机,然后无人机做出响应。这是您的情况:服务器(您的 PHP 代码)必须将信号(回显消息)发送到浏览器。这是可以做到的。调查 Web Sockets 的使用。
  • 谢谢,你的回答很清楚。我想我越来越了解 php 和 javascript 如何协同工作
  • 您可能想查看socket.io

标签: javascript php html ajax echo


【解决方案1】:

不,因为 php 是在服务器中解释的,而您只能在浏览器中获取 html。

【讨论】:

  • php 是一种解释型语言。
  • 好的,但答案是一样的。只能在服务器执行php
  • 有一种解决方案,就是通过 web sockets 进行客户端服务器通信。
  • 我想在我的服务器和我的客户端之间做一个“流”,所以每次服务器回显某些内容时,它都会显示到客户端浏览器中。这不可能吗?
  • 你能给我一个简单的网络套接字的例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 2017-12-15
  • 2021-08-14
  • 2020-05-14
  • 2015-09-28
相关资源
最近更新 更多