当在页面中需要进行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(); })
作者:Parry
出处:http://www.cnblogs.com/parry/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。