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

Laravel 10集成Ajax jQuery后页面异常,请求技术协助

Laravel 与 Ajax 集成遇到500错误及内存耗尽问题

问题背景

我是Laravel和Ajax jQuery新手,集成二者后遇到无法解决的问题,相关代码和错误如下:

相关代码

HTML代码

<li>
    <a href="" onclick="routeTomystore()">
        <i class='bx bxs-shopping-bag-alt'></i>
        <span class="text">My Store</span>
    </a>
</li>

基础页面代码

<div class="con">
    @include('dashboard')
</div>

路由配置

Route::get('/mystore', [routecontroller::class,'mystore'])->name('mystore');

Ajax jQuery代码(原代码存在语法错误)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
routeTomystore(){
    event.preventDefault();
    const CSRF_TOCKEN=$('meta[name="csrf-token"]').attr('content');
    $.ajax({
    url: /mystore,
    type: "GET",
    data: {
        CSRF_TOCKEN
    },
    success: function (data) {
        $("#con").html(data)
    },
    })
</script>

控制器代码

public function mystore():View{
    $user = Registrationform::get();
    return view('message', compact('user'));
}

出现的错误

  • 浏览器提示:HTTP ERROR 500,127.0.0.1 当前无法处理此请求
  • PHP致命错误:允许的内存大小536870912字节耗尽(尝试分配32768字节),错误出现在视图文件和ErrorPageViewModel.php中

解决方案

1. 修复Ajax代码的语法错误

  • 函数定义缺失function关键字,修正为:function routeTomystore(){}
  • url参数值需用引号包裹:url: '/mystore'
  • 选择器错误:页面中容器是class="con",应使用$(".con").html(data)而非$("#con")
  • GET请求无需传递CSRF令牌(Laravel默认CSRF中间件排除GET请求),可直接删除data参数

修正后的Ajax代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
function routeTomystore(){
    event.preventDefault();
    $.ajax({
        url: '/mystore',
        type: "GET",
        success: function (data) {
            $(".con").html(data);
        },
        error: function(xhr){
            console.log(xhr.responseText); // 添加错误回调便于调试
        }
    });
}
</script>

2. 解决内存耗尽问题

内存耗尽通常由视图无限循环或数据量过大导致:

  • 检查message.blade.php视图,确认是否存在递归包含(如再次引入dashboard视图导致循环)
  • 若Registrationform::get()返回数据量极大,改用分页加载:$user = Registrationform::paginate(10);
  • 临时提升PHP内存限制(仅临时方案,需找到根源):
    • 在项目根目录.htaccess添加:php_value memory_limit 1G
    • 或在public/index.php开头添加:ini_set('memory_limit', '1G');

3. 开启调试模式定位详细错误

在.env文件中设置APP_DEBUG=true,浏览器将显示Laravel详细错误信息,快速定位问题根源

内容的提问来源于stack exchange,提问作者Abdul Aziz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:22:27