You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免换行与多余空格问题?解决未终止字符串字面量错误

解决"unterminated string literal"错误:处理换行与特殊字符

核心问题根源

兄弟,这个错误我太熟了!本质是你PHP输出的内容(比如地址里的换行、引号这类特殊字符)直接嵌入JS字符串时,破坏了JS的语法结构。比如$orgDets['address']里如果有换行,直接输出成var myStr = "123 Street\n456 Avenue";,JS解析到换行的时候,会认为字符串在这里就结束了,自然报未终止的错误——你的replace('\n', '')根本没机会执行,因为代码在解析阶段就挂了。

最稳妥的解决方案:用json_encode()转义所有特殊字符

PHP的json_encode()会自动把字符串转成符合JS语法的字面量,包括转义换行、双引号、反斜杠等所有特殊字符,完全不用手动处理,是处理这类问题的黄金方案。

修改你的代码如下:

function OrganizationPrefill(type){ 
  if(type == 'org' ){ 
    var orgdts = <?php echo json_encode($orgDets['state']); ?>; 
    var myStr = <?php echo json_encode($orgDets['address']); ?>; 
    // 用正则全局替换所有换行,原写法只替换第一个
    var newStr = myStr.replace(/\n/g, ''); 
    $('#states option[data='+orgdts+']').prop('selected','selected'); 
    $("#address").val(newStr); 
    $("#zip").val(<?php echo json_encode($orgDets['zip']); ?>); 
    $("#city").val(<?php echo json_encode($orgDets['city']); ?>); 
  }
}

关键细节说明

  • 不要给json_encode()的结果加引号:它会自动给字符串类型的内容加上双引号,额外加引号反而会导致语法错误。
  • 全局替换换行:原来的replace('\n', '')只会替换第一个换行,用正则/\n/g才能替换所有换行符。
  • 所有PHP变量统一处理:不管是state、zip还是city,只要要嵌入JS代码,都用json_encode(),避免遗漏特殊字符导致新的错误。

额外调试技巧

如果还是有问题,右键查看页面源码,找到这段JS代码,看看生成后的字符串是不是还有未转义的换行、引号——比如如果看到var myStr = "123 Main Street";这种换行的情况,说明转义没做好,检查json_encode有没有正确使用。

内容的提问来源于stack exchange,提问作者Siva Ganesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:08:01