最近在做一个小东西,需要在前台把用户填写的表单(连同html代码)放送到后台数据库中的某字段保存,方便直接把数据取出来并显示该表单。
开始的时候,表单数据提交正常,但是经过ajax获取后返回的数据却无法被解析。开始还以为是html代码存储到数据库之后那些个类似这样的符号‘<’,'>'变成了另外前台没法识别或者解析运行的符号。网上也有人说在ajax返回数据后要把这些个符号转化前台可解析运行的一般符号。但是事实却不是如此。我后来做了个测试,把下面的代码:
<tableid="table" border="2">
<tr id="a"border="3">
<th> 工号 </th><th> 姓名 </th><script>document.write(showDL());</script><th>备注</th>
</tr>
<tr>
<td> 123</td> <tdclass="name"> 11111 </td><script>document.write(STR);</script><td> 334 </td>
</tr>
</table>
按照上面的流程,把这段代码作为表单项的值存储到后台数据库某字段中,再通过ajax获取到这个数据字段的值,结果是无法解析。后来我做了一下处理,把里面的换行符去掉,变成这样
<tableid="table" border="2"><tr id="a"border="3"><th> 工号 </th><th> 姓名</th><script> document.write(showDL());</script><th>备注</th></tr><tr> <td> 123</td> <tdclass="name"> 11111 </td><script>document.write(STR);</script><td> 334</td></tr></table>
一切就正常了,数据可以被解析。
上面的现象是代码直接作为字符串打印在屏幕上。然而我想要的是返回后被解析的代码段可以被运行并显示出来。网上也有人说把返回的代码段直接赋给变量b,然后通过$('#table').html(b);来实现。经过测试也不行。最终我使用了这样的方法,先把代码打印到屏幕上,再通过jquery获得这段代码,再通过html()方法运行这段代码。大概是这样:
$('#table').html($('#table').text());
最终达到了我想要的效果。个人的一点小总结,如果大家发现有什么错误,可直接回复,或者私聊我。晚安。