【问题标题】:get database records from ajax (error 500)从 ajax 获取数据库记录(错误 500)
【发布时间】:2021-06-25 14:36:53
【问题描述】:

我正在通过 GET 执行 AJAX 请求以从视图中的数据库接收数据。

我的 HTML:

<form method="POST" action="{{ route('myaccount.facturacion.guardar') }}">
@csrf

...

<div class="col-lg-3">
        <div class="form-group mb-3">
            <label>Código postal</label>
            <input type="text" name="codigo_postal" class="form-control" id="codigo_postal" maxlength="5" required>
        </div>
    </div>

        <div class="col-lg-3">
            <div class="form-group mb-3">
                <label>Localidad</label>
                <input type="text" name="localidad" id="localidad" class="form-control" required>
            </div>
        </div>

        <div class="col-lg-3">
            <div class="form-group mb-3">
                <label>Provincia</label>
                <input type="text" name="provincia" id="provincia" class="form-control" required>
            </div>
        </div>

</form>

我正在尝试执行的 AJAX 请求:注意:我将原始 url 替换为:...

$(document).ready(function () {
    var codigo_postal = $('#codigo_postal');
    codigo_postal.keyup(function () {
        var value = codigo_postal.val();
        if (value.length == 5) {

            $.ajax({
                url: '.../postal/' + value,
                method:'GET'
            }).done(function(res){
                alert(res)
            });
        }
    })
});

我试图发出请求的路线:

Route::get('postal/{codigo_postal}', 'MyAccountController@obtenerCodigoPostal')->name('postal_code.get');

附加到路由的控制器方法:

public function obtenerCodigoPostal($codigo_postal) {
        $cp = Categoria::where('codigo_postal', $codigo_postal)->first();
        $postal_code = $cp->codigo_postal;
        return response(['postal_code' => $postal_code]);
    }

我得到的错误:

你能帮帮我吗?请

【问题讨论】:

  • 500 错误意味着您的服务器端逻辑存在问题。我建议从那里开始调试。
  • 但是,“错误”图像显示响应是 302,这是一个成功的状态码...?您显示的 HTML 中也没有 #codigo_postal 元素。
  • 检查编辑! @RoryMcCrossan。我未能复制输入和放置图像
  • 可能在您的查询中“->get()”在“->first()”之前丢失
  • 您可以在storage/logs/laravel.log中检查服务器端错误

标签: jquery ajax laravel laravel-blade


【解决方案1】:

看起来响应已成功返回服务器,但正如 Rory 所说,这是服务器端代码的错误。这里:

public function obtenerCodigoPostal($codigo_postal) {
    $cp = Categoria::where('codigo_postal', $codigo_postal)->first();
    $postal_code = $cp->codigo_postal;
    return response(['postal_code' => $postal_code]);
}

如果您尝试返回 Categoria 是否存在,这有点不同。现在,您返回的内容与方法中的内容完全相同,即codigo_postal。但是,如果带有该邮政编码的 Categoria 不存在,它将在服务器上失败(500 错误),因为 $cpnull,因此无法从 null 对象中提取邮政编码.

我建议尝试发回邮政编码或失败消息,并在中间进行错误检查以防止服务器错误:

public function obtenerCodigoPostal($codigo_postal) {
    $cp = Categoria::where('codigo_postal', $codigo_postal)->first();
    if($cp === null){
        return response('Fail', 200);
    }
    else{
        $postal_code = $cp->codigo_postal;
        return response('Pass', 200);
    }
}

您可以稍后调整响应 - 这只会为您提供一种测试成功的方法。

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多