method返回意外错误:textarea加载数据库HTML内容时#cont控制台报错
问题分析与解决方案
先拆解你代码里的几个核心问题,这就是导致#cont报错、方法异常的根源:
1. DOM ID 重复(最直观的错误)
你写了两个<textarea>,但它们的id全是cont:
<textarea name="cont" id="cont"></textarea> <textarea name="name" id="cont"></textarea>
DOM 规则里ID 必须唯一,第二个对应#name的文本域,得把id改成name:
<textarea name="name" id="name"></textarea>
这也是你觉得#name“正常工作”的假象——其实JS是在操作第一个#cont元素,完全不符合你的预期。
2. 错误使用.html()设置textarea内容
textarea 的内容要通过**值(value)**来操作,jQuery 里正确的方法是.val(),而非.html()。.html()是用来修改元素的innerHTML,虽然偶尔对textarea能生效,但不符合规范,还会引发特殊字符渲染异常。
修正后的JS要把.html()换成.val():
$('#cont').val('<?php echo $cont['0']['desc'];?>'); $('#name').val('<?php echo $cont['0']['name'];?>');
3. PHP 输出未转义,触发JS语法错误
如果你的$cont['0']['desc']或$cont['0']['name']里包含单引号、换行、反斜杠这类特殊字符,直接用单引号包裹输出会破坏JS的字符串结构,导致控制台报错。
解决办法是用json_encode()转义内容,它会自动处理所有特殊字符,生成合法的JS字符串:
$('#cont').val(<?php echo json_encode($cont['0']['desc']);?>); $('#name').val(<?php echo json_encode($cont['0']['name']);?>);
注意这里不需要额外加单引号,json_encode()已经帮你生成带引号的标准字符串了。
最终修正后的完整代码
<script type="text/javascript"> //<![CDATA[ $('#cont').val(<?php echo json_encode($cont['0']['desc']);?>); $('#name').val(<?php echo json_encode($cont['0']['name']);?>); //]]> </script> <textarea name="cont" id="cont"></textarea> <textarea name="name" id="name"></textarea>
这样调整后,控制台错误和方法异常的问题应该就能解决了。
内容的提问来源于stack exchange,提问作者Jothees pvj
相关产品推荐
相关产品推荐

