码迷,mamicode.com
首页 > Web开发 > 详细

JSON 传值 textarea中虚拟换行功能

时间:2015-08-01 11:17:41      阅读:1269      评论:0      收藏:0      [点我收藏+]

标签:

遇到错误的袭击,

错误出现,使用jquery中ajax进行查询数据时执行完以后,需要把数据封装成为JSON类型的数据,并传递到前台去的时候出现Invalid JSON 错误,经查找后发现是在使用textarea文本域进行数据获取并插入到数据库的时候插入了一个回车符号,在获取到以后进行了传递,但是 JSON传值的时候,如果有回车符就会挂掉,需要对其进行处理

 

 

JSON 处

技术分享

使用到的工具jsonlint可以检测出json数据是否正确。

http://jsonlint.com/

技术分享

经检测后返现在这里出现了换行动作。

 

追溯到根源,在使用textarea时没有设置 虚拟换行属性 在输入时导致把换行符录入到数据库中,从而使数据再次查出并使用JSON传递时出现了格式错误的问题。技术分享

 

问题处理:

把已坏的数据进行手工处理,并在textarea中添加上wrap属性。

 

顺便说下JSON特殊符号的处理:

1. 回车问题

JSON传值的时候,如果有回车符就会挂的。我们可以使用正则来去掉回车符:

$str = preg_replace("‘([\r\n])[\s]+‘", "", $str);

// 不用正则
$str = str_replace("\n","",$str);

2. HTML特殊字符

从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 ‘<b>msg</b> #‘ 通过JS显示在HTML页面中时,显示成了 msg # ,并不是msg #,这是由于<与>之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。

解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:

    <script type="text/javascript">  
    var str = ‘<b>msg</b> #‘;  
    document.all.div1.innerHTML=‘<pre>‘+str+‘</pre>‘;  
      
    //js中的字符串正常显示在HTML页面中  
    String.prototype.displayHtml= function(){  
        //将字符串转换成数组  
        var strArr = this.split(‘‘);  
        //HTML页面特殊字符显示,空格本质不是,但多个空格时浏览器默认只显示一个,所以替换  
        var htmlChar="&<>";  
        for(var i = 0; i< str.length;i++){  
            //查找是否含有特殊的HTML字符  
            if(htmlChar.indexOf(str.charAt(i)) !=-1){  
                //如果存在,则将它们转换成对应的HTML实体  
                switch (str.charAt(i)) {                          
                    case ‘<‘:  
                        strArr.splice(i,1,‘<‘);  
                        break;  
                    case ‘>‘:  
                        strArr.splice(i,1,‘>‘);  
                        break;  
                    case ‘&‘:  
                        strArr.splice(i,1,‘&‘);  
                }  
            }  
        }  
        return strArr.join(‘‘);  
    }  
    alert(str.displayHtml());  
    document.all.div2.innerHTML=str.displayHtml();  
</script>  

3. 引号问题

JSON中如果包含引号或双引号,会破坏JSON的格式。

JavaScript中需要修改字符:被改的字符包括单引号 (‘)、双引号 (")、反斜线 backslash (\) 以及空字符NULL。

    function valueReplace(v){ 
v=v.toString().replace(new RegExp(‘(["\"])‘, ‘g‘),"\\\""); 
    return v; 
    } 
    var eValue = encodeURI($.trim(valueReplace(e.value))) 

 

技术分享
技术分享

 

JSON 传值 textarea中虚拟换行功能

标签:

原文地址:http://www.cnblogs.com/mhwl-wll/p/4693678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!