当前位置:首页 » 网页前端 » 前端提交
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端提交

发布时间: 2023-06-10 06:41:58

前端表单提交怎样 做出 兴趣 限制选项

很常见的业务场景,就是前端一个表单,submit给后台,在web.form时代,有from的runat="server"配合submit自动会提交给服务端,然后服务端解析Request装填对象。如果要是异步提交的话,就麻烦点,from表单不会自动把你的所有value传给后台,于是就一个一个获取value值,通过json对象异步提交给后台,然后再由后台一个一个解析,再封装给对象。

$.post("Handler1.ashx",{Name:$("#txtName").val(),Age:$("#txtAge").val()},function(res)
{...})

很庆幸的是上面只有2个参数,如果需要提交有10多个参数的话,用这种方法相信大家都有手疼的感觉。

幸亏在jquery上有serializeArray方法,可以不关心表单内容,只要有name属性,就会直接匹配value或者test值,生成一个json对象。如下:

<formid="createStudent_form"runat="server">
<table>
<tr><td>Name:</td><td><inputtype="text"name="Name"/></td></tr>
<tr><td>Address:</td><td><inputtype="text"name="Address"/></td></tr>
<tr><td>Sex:</td><td>男<inputtype="radio"name="Sex"value="1"/>女<inputtype="radio"name="Sex"value="0"/></td></tr>
<tr><td>Remark:</td><td><textareaname="Remark"></textarea></td></tr>
<tr><td><inputtype="button"value="submit"id="submit_btn"/></td></tr>
</table>

</form>

<scriptsrc="Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function(){
$("#submit_btn").click(function(){
varjson=$("#createStudent_form").serializeArray();
console.log(JSON.stringify(json));
});
})
</script>

点击提交表单,打印出来的结果是:
结果

一看是个json对象数组,除了第一个是webForm独有的shit东西以外,其他大家一眼可以看出来是name,value两个键值对相匹配。这与我们想要得到的格式{name:value}还不太一致,当然jquery做到这一步已经不错了(其实内部实现原理也不难,拿到表单一一遍历组成Json),剩下的就需要咱们自己扩展了。简单改造如下:
serializeJson

通过上面的方法就得到了咱们想要的结果集了,但是这只是最基本的扩展,你可以继续深化比如支持相同内容的多个表单提交,支持相同name的多选框等等。

咱们异步提交给后端看看:
异步提交com?
相信到了这一步后,用过Mvc的小伙伴们看了一下子就兴奋起来了,因为Action会自动转化类型,只要你在后台定义过一个StudentModel对象,其参数和name一致,然后不用关系Requset就可以直接拿到了对象的值,这简直是爽呆了,几乎是太简单了。如下:


自定义实体转化

希望能多少给你点帮助。

最后再反向操作下,给了Json对象,如何自动把值赋给表单中的元素:

数据源:

publicActionResultIndex()
{
returnView();
}
publicActionResultLoadAll()
{
List<Test>list=newList<Test>();
Testtest1=newTest(){
Id=1,
Name="xxx",
Title="xxx",IsCheck=false,
ClassId=1
};
list.Add(test1);
returnJson(list);
}
}
publicclassTest
{
publicintId{get;set;}
publicstringName{get;set;}
publicstringTitle{get;set;}
publicboolIsCheck{get;set;}
publicintClassId{get;set;}
}

前端:

<script>
$(function(){
load();
})

functionsyncJsonTofrom($form,entity)
{
for(varkeyinentity){
var$control=$form.find("[name="+key+"]");
if($control){
if($controlwww.66298899.com?attr("type")=="checkbox"&&entity[key]){
$control.attr("checked",true);
}
$control.val(entity[key]);
}
}
}
functionload(){
$.post("/Test/LoadAll",function(res){
varentity=res[0];
syncJsonTofrom($("#frm"),entity);
})

}
</script>
<formid="frm">
ID:
<inputtype="text"name="Id"/>
NAme:
<inputtype="text"name="Name"/>
Title
<inputtype="text"name="Title"/>
Ischeck<inputtype="checkbox"name="IsCheck"/>
class
<selectname="ClassId">
<optionvalue="0">xxx</option>
<optionvalue="1">222
</option>
<optionvalue="2">222333
</option>
</select>
</form>

❷ JS WEB前端开发如何防止重复提交的实现方

定义一个变量。
var flag= 0;
如果flag=0 就让提交
在提交后,数据没有返回来前,将flag=1
数据返回来后再设置成0
这样就能防止重复提交。非常有效。

❸ 前端如何将图片上传至后端

1. 如果是通过form提交的方式 ,后端直接通过前端的name值即可获得图片

2.如果没有通过form提交 ,则可以通过js将上传的图片进行base64转码,后端再进行解码即可

❹ 前端文件上传多种方式

   前端上传文件【包含图片、视频等资源文件】是相当常见的场景,作为一名前端开发人员你会遇到后端接收文件的多种方式,以及前端不同场景下的生成的不同文件上传格式。

   1、表单上传方式【最场景、最简单的方式】

上面的是挺简单的,but 刷新了,这个体验大多数场景中让人接受不了,最简单的处理方式设置submit 返回 false;

   2、表单升级版 【formData】
   有些场景中我们不一样会使用form,或者说不想用,那么formData就是一个很好的选择了,首先刷新问题是肯定没有了,而且看上逼格更高。

   3、formData 上传 blob 图片

   4、formData 上传 base64 图片; // 一般是把base64转blob在上传

   其他方式欢迎留言探讨, 上面大部分写法是直接用vue的方式,其实都差不多哈。

❺ jquery或js前端提交数据的几种方式

1.jquery提交数据的方式:
(1)第一种jquery序列化提交数据方式:
通过id获取的form表单元素.serialize();
(2)第二种模拟form表单提交元素:
$('#form表单id').attr('method','post');
$('#form表单id'').find('input[name="type"]').val(test);
$('#form表单id').find('input[name="dfrom_to1"]').val(dfrom_to);
$('#form表单id').find('input[name="gt_road_new"]').val(gt_road);
$('#form表id').attr('action',AdminLTE.ctx+'/moles/ltegt/findAllCoverAndInterfere.do');
$('#analysisForm').submit();
2.js提交数据的方式:
(1).js提交表单( .submit()方法提交表单 )
function doSearch(){
var action ="<%=path%>/User_queryAllUser";
document.all.form.action = action;
document.all.form.submit();}
(2).js替代超链接( window.location.href )
<input type="button" id="modify" value="修改工号" οnclick="modifyEmp(${ myList.employeeId })">
//js不能起名为modify,为敏感关键字
function modifyEmp( employeeId ){
//employeeId 作为js的参数传递进来
window.location.href = '<%=path%>/User_openUserUpdate?employeeId='+employeeId;

❻ 详解前端文件上传

首先文件上传首先想到的发post,当然还有其他的上传协议,我们这里只介绍发post。
post支持四种content-type:

Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。

首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。
RFC1867

application/json这个Content-Type都比较熟悉,当然也可以把json放到formData中;
RFC4657

参见RFC,也比较常见。
XML-RFC

在HTML中要有一个包含了文件输入框的form元素,表单里元素的name一定要写,最终形成formData时,是以name作为key值

如果直接在form里写action的话,会刷新表单,同步请求。所以用发送异步post请求方式。

你还可以不借助HTML表单,直接向FormData对象中添加一个File对象或者一个Blob对象:

你还可以使用jQuery来发送FormData,但必须要正确的设置相关选项:

MDN:使用FormData

❼ 前端数据提交问题

前端可以让用户通过typeName选择,但提交数据时必须是id,否则如果有同名的typeName后台是绝对无法区分的,即使是上帝也没办法。
比如前端是用下拉框来选择userType的,那么可以这样:
<select name="userType">
<option value="这里放id">这里放typeName</option>
<option value="这里放id">这里放typeName</option>
......
</select>
这样的话用户选择时看到的是typeName,但上传时则是id