
点击某个链接,出现js错误:Uncaught SyntaxError: Unexpected token ILLEGAL
原因:
$str .= sprintf('  <a href="javascript:void(0);" onclick="modifyEssBrief(%s);">编辑</a>', $val['_id']);
点击编辑链接,触发modifyEssBrief的js函数。
其中的html代码是:
<a href="javascript:void(0);" onclick="modifyEssBrief(52ddeea90114e68d36000000);">编辑</a>
出现JS错误提示:Uncaught SyntaxError: Unexpected token ILLEGAL
原因是,js能够判断出modifyEssBrief是个函数,函数的参数为 52ddeea90114e68d36000000
js会将这一串字符串解释成为变量,那么变量是不允许以数字开头的,那么就会报出语法错误来。
做个实验可验证:
function a(b){alert(b);}
a(01ttt)
在console下运行这段js,会报出错误:SyntaxError: Unexpected token ILLEGAL
与猜测一致,可定位问题原因。
修复:
$str .= sprintf('  <a href="javascript:void(0);" onclick="modifyEssBrief(\'%s\');">编辑</a>', $val['_id']);
谨记:
在模板用php输出js函数的变量时,一定要加引号来明确标记此次输出是字符串,而不是变量。