换行符在ajax中返回json,eval时发生的 Unexpected token ILLEGAL

用户如果输入了换行在数据中记录为‘空格’,但不是真正的空格。

程序前台采用ajax和json返回数据绑定时会 出现 Unexpected token ILLEGAL

例子:

在sql中存储为下图

技术分享

在“)”与“导”,"林"与"pet"之间实际保存的是换行符。

[javascript]  view plain  copy
  1. $.ajax({  
  2.         url: ‘‘,  
  3.         type: ‘POST‘,  
  4.         data: { },  
  5.         dataType: ‘text‘,  
  6.         success: function (dt) {  
  7.             eval("dt=" + dt);  
  8.         },  
  9.         error: function () {  
  10.         }  
  11.     });  

在eval时就会出现Unexpected token ILLEGAL。经验告诉我们Unexpected token ILLEGAL 就是一些格式、标签、语法等一些的不正确,不完整

我们在调试的浏览器中点击错误后面的**.js进去,看到的json没问题。别急,我们把json复制出来。

在bejson网站格式化一下,格式化也没问题。通过了。

问题出在哪呢,仔细看,你会发现在“)”与“导”,"林"与"pet"之间多了\n——文本换行符。

它就是罪魁祸首。

 

OK,找到了问题,我们就解决它,方法很简单

在存储过程中replace掉

你的字段为varchar:REPLACE( 字段名, CHAR(10), ‘<br/>‘) AS [别名] 

你的字段为textntext:REPLACE(CONVERT(VARCHAR(MAX), 字段名), CHAR(10), ‘<br/>‘) AS [别名] 

ps:
char(10)换行键 \n
char(13)回车键 \r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值