zoukankan      html  css  js  c++  java
  • jQuery开始做恶了 不及格的程序员

    我是从asp时代过来的程序员,那个时代如果你传一个name相同的多个表单元素到后台时,它会形成一个数组,你可以获取name就行了,

    但是当jQuery1.4出来时就不一样了,它改变了规则,它默认加了[]符号到name后面,变成了name[].

    {foo: ["bar", "baz"]} 会被序列化为 “foo[]=bar&foo[]=baz”.

    在jQuery 1.3版里, {foo: ["bar", "baz"]} 会被序列化为 “foo=bar&foo=baz”.

    jQuery.ajaxSettings.traditional进行全局切换,或者根据情况单独切换。

    总共有3种方式可以切换到旧的序列化方式:

    1 // 全局改变序列化方式 (使用旧的)
    2 jQuery.ajaxSettings.traditional = true;
    3 // 指定情况使用旧的序列化方式
    4 jQuery.param( stuff, true );
    5 // 针对一个单独的Ajax请求使用旧的序列化方式
    6 $.ajax({ data: stuff, traditional: true });

    随着年龄的增加,好多年不用这种写法了,记忆也模糊了。。。

    html 中是允许多个具有相同name属性的元素的
    服务器端读取的常规做法是: 

    string name = Request.Params["txtName"]; 

    得到的将是一串以逗号分割的字符串,当然你可以手动分割: 
    string[] nameParts = name.Split(','); 
    但是当每个 input 输入可能包含逗号的时候,通过逗号分割就会是错的。 
    如何解决? 
    在 Classic ASP 通过 Request 可以这样分别获取 

    <% 
    firstName = Request.Form("txtName")(1) 
    middleName = Request.Form("txtName")(2) 
    lastName = Request.Form("txtName")(3) 
    %> 
    在 ASP.NET HttpRequest 同样支持 Classic ASP Request 的用法, 

    string[] nameParts = Request.Params.GetValues("txtName"); 
    string firstName = nameParts[0]; 
    string middleName = nameParts[1]; 
    string lastName = nameParts[2]; 
    以上用法对于 GET/POST 方式提交都是适用的。 

    值得注意的是,用来存储 QueryString/Form/ServerVariables 的对象是 System.Collections.Specialized.NameValueCollection, 这是 Key/Value 型对象,它的特殊性在于,一个Key下可存储多个 Value。 

    越来越怀念 Classic ASP,ASP+ 将简单的HTTP裹得太严实,很多简单实用的用法逐渐被遗忘,漫天飞的 runat="server" 让诸多原始但精巧的 form 处理方式没有被传承下来....
  • 相关阅读:
    php数据过滤函数与方法示例【转载】
    MySQL 数据类型 详解 (转载)
    【总结整理】产品经理-电台
    【总结整理】职业选择
    【总结整理】什么样的产品是好产品
    【总结整理】微信产品-张小龙-PM学习总结
    Arcgis engine编程报错查询(转)
    ArcEngine开发遇到的问题(转)
    【总结整理】OpenLayers项目分析,OpenLayers中的图层,GeoServer发布wms服务--实验(转)
    带你剖析WebGis的世界奥秘----Geojson数据加载(高级)(转)
  • 原文地址:https://www.cnblogs.com/ioriwellings/p/2918026.html
Copyright © 2011-2022 走看看