Laravel框架JavaScript出现未定义常量i报错的解决方法
问题修复方案
报错根源
你现在的写法混淆了服务端Blade模板渲染逻辑和客户端JavaScript运行逻辑:
Blade的{{ }}语法是服务端PHP执行的,在页面返回到浏览器之前就已经跑完了,此时你的JS里定义的i、j变量根本还不存在,PHP会直接把代码里的i、j当成PHP常量去解析,自然就报「未定义常量i」的错误。
修复方案
你需要先把后端的PHP数组转成前端JS可以直接读取的对象,之后完全用JS逻辑遍历,不要混写Blade语法和JS变量:
- 先在JS代码段开头把Laravel变量转成JS可访问的数组:
// 直接用Laravel自带的@json指令把PHP集合转成JS数组 const codes = @json($codes); const coordinators = @json($coordinators);
- 修改你的业务函数,全程用JS变量遍历:
function defaultcoor(course) { for(let i=0; i < codes.length; i++) { for(let j=0;j < coordinators.length; j++) { if(course == codes[i].id && coordinators[j].staffid == codes[i].coordinator_id) { document.getElementById("coordinatorname").value = coordinators[j].id; // 匹配到后可直接break跳出循环,减少无效遍历 break; } } } }
内容的提问来源于stack exchange,提问作者Shahir Azrie
相关产品推荐
相关产品推荐

