【问题标题】:execute php after json outputjson输出后执行php
【发布时间】:2023-03-24 04:11:01
【问题描述】:

我从 php 文件中以 json 格式发送少量数据,它可以正常工作。但我想在 json 输出后继续执行 php 文件。如果我评论这一行,那么那些 php 代码正在执行,否则它们不会执行。

header('Content-Type: application/json', true);
 some more code here
   exit(json_encode($response));

接下来是一些建立数据库连接并执行的php代码。

   $res2 = $con->query("SELECT * FROM `tableA` where status='0' order by id desc limit 5");

更新代码并将状态更改为 1 如果我在代码下方发表评论

      exit(json_encode($response));

然后更新代码工作并将状态更新为 1,否则为 0。主要是因为它是一个 json 文件,根据标题,它建议在退出代码后关闭脚本执行。我尝试将标题设置为无并回显输出,但它不起作用。我也试着冲洗。它也没有工作。任何想法都会很棒

【问题讨论】:

  • 您似乎误将exit() 误认为echo()。使用echo() 显示文本(将其发送回浏览器)。使用exit() 在该点终止脚本的执行(exit() 永远不会返回)。

标签: php json


【解决方案1】:

使用回显代替退出

echo json_encode($response);

exit 将终止该行的代码。

【讨论】:

  • echo 不是 json 格式。在我使用 echo 时,chrome 浏览器响应和预览显示相同,但​​在我使用 exit 时显示格式化代码
  • json 不需要被格式化 ("prettyJson") 来理解 js。
  • 无法在浏览器中显示,但我可以在控制台中看到
  • 你能用 exit & json 粘贴输出吗?
  • @PraveenPK 我可以看到 echo 给出了两组数据,而 exit 给出了一组数据。如果未能找到,请在几分钟内发布
【解决方案2】:

您的问题非常不清楚,但据我所知,您希望“实时”将输出发送到浏览器,而不是等待脚本完成。您仍在使用exit,它将结束脚本。您应该改为 echo 并立即刷新输出。

例如

header('Content-Type: application/json', true);
//some more code here
echo(json_encode($response));

// This is what you need
ob_flush();
flush();

// Even more code
echo(json_encode($anotherResponse));

【讨论】:

  • echo 不是 json 格式。在 chrome 浏览器中,当我使用 echo 时,响应和预览显示相同,但​​是当我使用 exit 时它显示格式化代码,所以它没有进入浏览器但是我可以在 consol 中看到
  • 你能粘贴输出吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
相关资源
最近更新 更多