ajax请求返回值遇到class、ID遇到“.”

       今天遇到了一个坑,明明是用同样的前端模板生成的一段html 片段,同样的 js,在有的页面能触发,在有些页面却没有任何反应。排除了一上午后才发现,是从后台传来的值作为 ID时有问题,这些ID 有的是通过 “_” 连接,而有的则是带“.”  的形式。  而js  中这样的形式它是不认识的!!!当然这也不能怪后台的小哥们没有一个统一的规范,总有那么些时候有那么些问题不能避免,倘若他们不方便去修改,前端的妹纸就只能在获取值后一一判断,把不符合规范的都统统改掉。今天,我就通过几种简单的方法将“.”  改为“_”  。

假设请求返回的json  数据如下:

var  json = {

   "child":[

         {

                "name":"qq.aa.cc",

                 "id":1

         },

         {

                   "name":"qq.bb",

                     "id":2

         },

        {

                    "name":"qq.cc",

                      "id":3

        }

  ]

}


方法一: replace()  方法

$.each(json.child,function(i,n) {

       if(n.name.indexOf('.') >0){

              n.name=n.name.replace('.','_'); 

       }

})

      这种方式的缺点时,只能匹配第一个符合条件的替换,就是说qq.aa.cc 最后只能被更换为 qq_aa.cc。在有些明确的知道只有一个符号的时候这种方式能解决问题。当有更多的,比如qq.aa.cc  时,可以使用以下方法:

方法二:使用数组的方法:spilt('.').join("_")

n.name=n.name.split('.').join('_')


方法三:利于正则表达式

varreg=/\./g;

n.name= n.name.replace(reg,'_');

注意,由于在正则中“.”  代表任意,如果没有转义将会把所有的包括字符 都替换为“_” ,“ g” 表示全局。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 准备工作:1、首先引入UISearchBarDelegate代理2、添加一个数组,存放搜索结果 3、创建table...
    来宝阅读 12,683评论 8 55
  • 【读经】 代下36章 【金句】 这就应验耶和华藉耶利米口所说的话:地享受安息;因为地土荒凉便守安息,直满了七十年。...
    chanor阅读 4,559评论 0 0
  • 首先界定什么是集体行动、社会运动和革命, 根据组织化程度、制度化程度和追求的社会变革化程度三个维度描述政治行为,...
    象带你去旅行阅读 607评论 0 0