Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax完成后如何调用post_Javascript_Ajax - Fatal编程技术网

Javascript ajax完成后如何调用post

Javascript ajax完成后如何调用post,javascript,ajax,Javascript,Ajax,如果ajax调用,我想在完成后调用表单提交按钮。 我的页面有两个按钮。 一种是通过ajax上传图像。 另一个是提交按钮 function upload(data){ console.log(upload start); $.ajax({ type: "POST", url: "imagestore", data: data, timeout: 3000 }).done(function

如果ajax调用,我想在完成后调用表单提交按钮。
我的页面有两个按钮。
一种是通过ajax上传图像。
另一个是提交按钮

function upload(data){ console.log(upload start); $.ajax({ type: "POST", url: "imagestore", data: data, timeout: 3000 }).done(function(data){ console.log('upload finish'); }).faile(function(){ }); } function submit(){ console.log('submit start'); var form = document.createElement('form'); form.setAttribute('method', 'post'); form.setAttribute('action', '/nextpage'); form.submit(); } 功能上传(数据){ console.log(上传启动); $.ajax({ 类型:“POST”, url:“imagestore”, 数据:数据, 超时:3000 }).完成(功能(数据){ console.log('upload finish'); }).faile(函数(){ }); } 函数提交(){ console.log('submit start'); var form=document.createElement('form'); form.setAttribute('method','post'); form.setAttribute('action','/nextpage'); 表单提交(); } 如果用户在提交按钮之前使用上载按钮。 控制台日志如下所示

上传开始
提交开始

映像未存储在服务器中

若用户使用上传按钮很久以前,这是并没有问题的

上传开始
上传完成
提交开始


等待完成上载功能的最佳方式是什么。

从提供的详细信息来看,不清楚是每个表单上载一个图像文件,还是可能有多个图像文件。以下是成功上传图像后处理提交的方法之一

  • 更改函数
    upload(data)
    以返回
    ajax承诺
功能上传(数据){
console.log('upload start');
返回$.ajax({
类型:“POST”,
url:“imagestore”,
数据:数据,
超时:3000
});
}
  • 定义一个函数
    safeSubmit()
    ,该函数依次上载未处理的图像文件,最后处理表单提交
函数safeSubmit(){
var unprocessed_file_data=[/*未处理文件上传的数组,从表*/]中获取;
var processing_index=0,processing_length=unprocessed_file_data.length;
如果(处理长度>0){
函数safeUpload(){
返回上载(未处理的文件数据[处理索引])。然后(()=>{
处理索引++;
返回处理索引

现在为表单的提交操作按钮使用
safeSubmit()
函数。

在提交其他主表单数据之前,您还可以使用一个能够完美处理文件上传的库,从而使您的生活更轻松

multiple
属性添加到文件输入以创建多文件 降落区

使用
data max files
属性限制文件的最大数量。 拖放图像,FilePond将渲染快速预览。它也会 正确的手机照片方位信息

一个JavaScript库,可以上传你扔给它的任何东西, 优化图像以加快上载速度,并提供一个非常好的、可访问的, 丝般流畅的用户体验

简言之

  • 安装filepond。
    npm安装文件池
  • 将库导入到项目中
  • 导入“filepond/dist/filepond.min.css”;
    从“FilePond”导入*作为FilePond;
    //创建文件上载组件。
    常量$filepond=$(“#filepond输入”);
    FilePond.create($FilePond.get(0){
    multiple:false,//对于多个文件上载,更改为。
    名称:“images”,//发送到服务器的元素“name”。
    要求:正确,
    })
    //定义将创建的服务器(后端)路由
    //接收Filepond发送的相应请求。
    FilePond.setOptions({
    服务器:{
    /*这将是将
    *接收/处理文件。
    *当用户上载文件时会发生这种情况。
    *请求将包括“图像”请求参数
    *以上载的文件作为其值。
    *“服务器”路由必须使用唯一标识符响应/返回
    *用于保存/处理的文件,即文件id。
    * */
    过程:{
    url:`/imagestore`,
    方法:“张贴”,
    onerror:$error=>console.log($error)
    },
    /*这将是将
    *接收删除文件的请求。
    *它将基本上接收一个“请求有效负载”
    *包含要删除的唯一文件标识符
    *从服务器。
    *当用户单击❌ Filepond中的图标
    *用户界面。
    *您可以使用此唯一的文件标识符来选择
    *要在服务器上删除的资源(文件)。
    *“服务器”路由可能会响应/返回成功/错误
    *响应取决于删除过程的进行方式。
    * */
    回复:{
    url:`/imagerevert`,
    方法:“删除”,
    onerror:$error=>console.log($error)
    }
    }
    });
    //处理主表单提交。
    //相当于提交函数。
    const$submitBtn=$(“#提交表格btn”);
    const$form=$(“#form”);
    $submitBtn.单击(功能(e){
    e、 预防默认值();
    $.ajax({
    类型:$form.attr(“方法”),
    url:$form.attr(“操作”),
    数据:$form.serializeArray(),
    成功:功能($response){
    //处理成功,即显示成功消息。
    //警报(“成功”);
    },
    错误:$error=>console.log($error)
    });
    });
    
  • 定义常规HTML表单
  • 
    提交
    
    在这种情况下,主表单提交服务器路由
    /nextpage
    将正常接收其余表单输入元素

    此外,在这种情况下,它将接收
    图像
    ,作为请求参数和请求有效负载,其中包含先前由进程路由发送的唯一文件标识符<