zoukankan      html  css  js  c++  java
  • 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>

    在第一个tab对应的按钮事件中添加如下的js代码

    $("#hiddenWord").val($("#word").val());
    $("#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(); })
  • 相关阅读:
    高效实用的.NET开源项目
    【转载】代理模式应用实例
    开源的 Restful Api 集成测试工具 Hitchhiker
    【转载】C#反射机制详解
    Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
    【转载】C#之玩转反射
    python管道pipe
    如何防范短信接口被恶意调用
    TCP三次握手,四次分手
    psycopg事务
  • 原文地址:https://www.cnblogs.com/parry/p/Post_Form_Using_JavaScript.html
Copyright © 2011-2022 走看看