Laravel中使用AJAX提交问卷报错:baseUrl未定义
解决Laravel AJAX问卷提交时“baseUrl not defined”报错问题
这个报错的原因很直接:你在AJAX代码里使用了baseUrl变量,但这个变量从来没有被定义过,浏览器找不到它就抛出了错误。下面给你几种简单有效的解决办法,按需选择就行:
方法1:在Blade视图中全局定义baseUrl
在你的Blade视图里(比如页面的<head>标签内,或者引入外部JS文件之前)添加一段脚本,用Laravel的url()辅助函数生成网站根地址并赋值给全局变量:
<script> // 定义全局的baseUrl变量,外部JS可以直接访问 const baseUrl = "{{ url('/') }}"; </script>
这样你的外部JS文件里的baseUrl + "/post/post/ajax"就能正常拼接成完整的请求地址了。
方法2:直接在Blade中生成完整AJAX请求地址(更推荐)
既然你说可以把JS代码放到Blade视图里,那直接用Laravel的路由辅助函数生成完整的请求URL是最稳妥的方式,完全不需要依赖baseUrl变量:
修改你的AJAX代码里的url参数:
$.ajax({ method: "POST", // 直接用Blade生成正确的路由地址 url: "{{ url('/post/post/ajax') }}", data: { unos: uneto, _token: token }, // 其余代码不变... });
这种方式避免了手动拼接URL的麻烦,也不容易出错,尤其是当你修改路由前缀的时候,不需要再手动调整JS里的地址。
方法3:通过HTML data属性传递baseUrl(适合坚持用外部JS的场景)
如果你还是想把JS放在外部文件里,可以在页面的某个元素(比如<body>)上添加data属性来传递baseUrl:
<body data-base-url="{{ url('/') }}">
然后在你的外部JS文件里获取这个值:
$(document).ready(function(){ // 从data属性中获取baseUrl const baseUrl = document.body.getAttribute('data-base-url'); $('#submitanketa').click(function(){ // 后续代码里就可以正常使用baseUrl了 $.ajax({ url: baseUrl + "/post/post/ajax", // 其余代码不变... }); }); });
小提示
顺便看了下你的控制器和模型代码,发现模型的ubacianketu()方法里插入的字段是id_kor,但模型类里定义的属性是$id_korisnik,这里要确保和数据库表的字段一致,避免数据插入失败哦。
内容的提问来源于stack exchange,提问作者skyhunter96
相关产品推荐
相关产品推荐

