我对我的项目有一个想法,我使用 ajax 作为前面,使用 laravel 作为后面。
例如处理图像时。
处理图像的步骤是这样的。
- 上传图片
- 验证图像
- 压缩图像
- 完成
因此,在用户方面,我想显示报告每个 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 脚本?
最佳答案
不,没有办法返回成功并继续执行脚本。
最常见的方法是使用队列和作业,请在此处查看更多信息: https://laravel.com/docs/5.8/queues
另一种方式取决于您的应用程序逻辑。如果您确定用户在成功后会留下来,您可以拆分您的请求,并在上传图像时返回图像标识符并做出另一个响应来对其进行操作,例如:
$.ajax({
url: '/upload',
data: {...},
success: function(res){
compressionRequest(res.image);
}
})
另一种方法是使用像这样的事件流的套接字:
Send upload event => successfull upload event => user gets success message => server continues manipulations on image
希望这对你有帮助
关于javascript - 如何发送响应到ajax但保留procces php脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60042673/