【问题标题】:how to send response to ajax but keep procces php script如何向ajax发送响应但保留procces php脚本
【发布时间】:2020-05-19 09:54:00
【问题描述】:

我对我的项目有一个想法,我在这里使用 ajax 作为前面和 laravel 作为后面。

例如在处理图像时。

处理图像的步骤是这样的。

  1. 上传图片
  2. 验证图片
  3. 压缩图片
  4. 完成

所以,在用户方面,我想显示报告每个 php 脚本都完成了任务。

例如,当 php 完成上传图片时,我想向用户返回上传完成的消息,然后下一步是验证图片等等...

我所知道的是,返回对 ajax 的响应是使用

public function upload_image(Request $request){
    //script to upload image...
    return response()->json([
        'status' => 'true',
        'state' => '1',
        'msg' => 'upload image'
    ]);

    //script to checking images and more...
}

并确保这将在返回后停止继续进程。

有没有办法向用户返回响应但继续处理 php 脚本?

【问题讨论】:

  • 是的,使用queues
  • 您还可以阅读 Sockets。
  • 是的!使用 js、curl 和 ajax 有几种方法可以做到这一点。这是显示百分比的进度条的简单示例,可以在上传期间返回有关文件的更多信息。会话上传进度sitepoint.com/tracking-upload-progress-with-php-and-javascript 网上有很多例子。

标签: javascript php ajax laravel


【解决方案1】:

不,没有办法返回成功并继续执行脚本。

最常见的方法是使用队列和作业,请在此处查看更多信息: https://laravel.com/docs/5.8/queues

另一种方式取决于您的应用逻辑。如果您确定用户在成功后会留下来,您可以拆分您的请求,并在上传图像时返回图像标识符并做出另一个响应来对其进行操作,例如:

$.ajax({
    url: '/upload',
    data: {...},
    success: function(res){
        compressionRequest(res.image);
    }
})

另一种方法是使用像这样的事件流的套接字:

发送上传事件 => 成功上传事件 => 用户收到成功消息 => 服务器继续对图像进行操作

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多