JSON 传值 textarea中虚拟换行功能

遇到错误的袭击,

错误出现,使用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))) 

时间: 2024-10-07 06:46:47

JSON 传值 textarea中虚拟换行功能的相关文章

textarea 中的换行符问题

下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船 1.必须知道textarea中的换行符是 \n  (个人检测发现按回车键是\n,好像在linux下是\r\n) 2.用nl2br之前,请仔细看好手册解释,我就是搞郁闷了,一般都理解为将\n转换成<br >,其实不是的: 看php手册解释: nl2br –  Inserts HTML line breaks before all newlines in a string Returns string with ‘<br

如何在 &lt;textarea&gt; hello (换行)world &lt;/textarea&gt; 中实现换行

我终于搜到了靠谱的我需要的答案: https://blog.csdn.net/qq_16371909/article/details/79697780 \n 不行 <br> 不行 用 ASCII设备控制代码  https://www.w3school.com.cn/tags/html_ref_ascii.asp 中的 ASCII设备控制代码最初被设计为用来控制诸如打印机和磁带驱动器之类的硬件设备.在HTML文档中这些代码不会起任何作用(也不全是这样,写在html中还是会有一些符号的). 用在

php过滤textarea 中的换行符问题

之前我写的替换代码是这样的 $content = str_replace('\r\n', '', $_POST['content']); 为了确保window和Linux的换行符都能去掉,改成这样的: $content = str_replace('\r', '', $content); $content = str_replace('\n', '', $content); 运行的时候发现还是有问题,换行符没有被替换,然后开始百度textarea的换行符,和str_replace的用法,最后发现

使用textarea标签按Enter键后web页面中成换行 vue

对于textarea标签的换行问题,其实就是要将textarea里的Enter键替换成web页面中"<br/>". 以下是我的一些方法. 首先我是写一个方法(methods) formatSolution(s) { if (s) { return s.replace(/\s/g,'<br/>') } else return '' }, 然后在到html找到相应的位置. <tbody> <tr v-for="(x,index) in f

如何让textarea中输入多行的数据在p标签中换行?

我们在用React开发Web项目的过程中,有的时候,我们需要把textarea中输入的多行字符串,在其他的标签中输出来,比如p标签.但是,往往这个时候,在p标签中输出的内容其默认情况下是不换行的.比如下面的代码: import React,{Component} from 'react'; export default class HelloWorld extends Component{ constructor(){ super(...arguments); this.state={ note

微信小程序-textarea中的文本读取以及换行问题

今天客户那边要求textarea中输入的问题可以按回车键换行,而我使用的是bindinput获取值,但是呢bindinput 处理函数的返回值并不会反映到 textarea 上,按回车键导致点击换行符无法使文字换行. 此时便换用 form bindsubmit="formSubmit" 方式获取textarea值了,此种方式的好处是按回车键自动换行. 并且在用户回车的地方会带有?这个符号,这个符号相当于 换行符 \n. 1.项目详情页中需要将textarea值换行显示,此时放在<

JQuery easyUI框架(一)—Json传值

JQueryEasyUI是一组基于jQuery的UI插件集合体,而jQueryEasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要了解的只有一些简单的html标签. easyUI一般通过Json串与后台进行交互,下面具体介绍怎样使用Json. 一.Json JSON:JavaScript 对象表示法(JavaScript ObjectNotation),用于存储和交换文本信息的语法

C# Json传值与解析

最近接触了工作室的项目,觉得一个功能的实现有点不好,心想不能就动手改了下,做了才知道我的js是多么的渣,功能是这样的: 我要实现的功能就是当选择学院时,就放松get请请求到后台,后台返回json信息再来填充班级的信息 C#后台代码: public string ClassToJson( List<Class> Class) { var sb = new StringBuilder(); sb.Append("["); if (Class != null) { foreach

深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)

在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对第一篇中,端口转发功能的样例代码,all-in-one http service 风格的实现. 核心功能: find_router_ip = "ip netns exec qrouter-{router_id} ifconfig |grep -A1 qg- | grep inet | awk '{{