js模拟form提交的一些问题
当在页面中需要进行post提交时,一般的做法是将控件放入form标签中,加入一个submit按钮进行post方式的提交。
遇到的问题
页面中有两个Tab进行切换,一个tab中需要获取用户输入的值进行post提交到search页面进行搜索操作,另一个tab中是获取用户输入的值进行get方法提交到另一个页面进行查询操作,那么那个按钮就不能使用submit类型的按钮了(后来发现那样也可以实现相应的功能),那么想到的方法就是模拟一个form进行post提交。
解决的方法
在页面中放入下面的模拟form
<form id="formSearch" method="post" action="/search.aspx">
<input type="hidden" id="hiddenWord" name="word" value="" />
</form>
<input type="hidden" id="hiddenWord" name="word" value="" />
</form>
在第一个tab对应的按钮事件中添加如下的js代码
$("#hiddenWord").val($("#word").val());
$("#formSearch").submit();
$("#formSearch").submit();
id为word的控件为用户输入条件的input控件
这样就实现了js的模拟post提交,实际上这样还解决了aspx页面的form中嵌套from标签的问题
编码的问题
当前的页面编码为UTF-8的编码,而search.aspx的编码为GB2312,所以post过去的数据出现了乱码,当然也可以使用js的encodeURIComponent进行编码
实际上在aspx页面的头部page注册时有这样一个属性:ResponseEncoding
加入此属性后aspx页面的头部应该像下面这个样子
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" ResponseEncoding="GB2312" %>
这样就解决了页面编码不一致的问题。
另一个小技巧
在submit按钮post前可以进行自定义函数的检查,即可以阻止掉post的提交过程
在submit的时候执行一些自定义的操作,需要先用preventDefault阻止提交
$("#id_form").submit(function(e) { e.preventDefault(); doSomething(); e.target.submit();})
click的时候就不需要,直接操作就可以
$("#id_save").click(function(e) { doSomething(); })
分类:
02.Web Issues
标签:
JavaScript
, ASP.NET
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述