Javascript ajax完成后如何调用post
如果ajax调用,我想在完成后调用表单提交按钮。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上传图像。
另一个是提交按钮 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库,可以上传你扔给它的任何东西,
优化图像以加快上载速度,并提供一个非常好的、可访问的,
丝般流畅的用户体验
简言之
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)
});
});
提交
在这种情况下,主表单提交服务器路由/nextpage
将正常接收其余表单输入元素
此外,在这种情况下,它将接收图像
,作为请求参数键和请求有效负载,其中包含先前由进程路由发送的唯一文件标识符<