ajax获取数据请求url未找到但已经存在,Laravel 8

Posted

技术标签:

【中文标题】ajax获取数据请求url未找到但已经存在,Laravel 8【英文标题】:ajax get data request url not found but already exist, Laravel 8 【发布时间】:2021-04-30 23:40:37 【问题描述】:

大家好,我的 ajax 数据 json 有问题,我有一个关于使用网络摄像头扫描条形码的项目,但它只是查看条形码的代码,数据库中的数据没有在我的 ajax 中调用,这是刀片的代码,我正在使用模态 这是模态

<div id="myModal" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="scanModalLabel">Scan Barcode</h5>
                <button type="button" class="close close-btn" data-dismiss="myModal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
            <dl class="row">
                <dt class="col-sm-4"><h4>Kode Barang</h4></dt>
                <dd class="col-sm-8" id="kode_barang"></dd>
            </dl> <hr>
                    <table class="table align-items-center tabel-detail" >
                        <thead class="thead-light">
                          <tr>
                            <th>Nama Barang</th>
                            <th>Harga Jual</th>
                            <th>Stok</th>
                            <th>Insert</th>
                          </tr>
                        </thead>
                        <tbody class="list">
                        </tbody>
                      </table>
            </div>
            <div class="modal-footer">
                
            </div>
        </div>
    </div>
</div>

这是jquery代码

var args = 
        autoBrightnessValue: 100,
        resultFunction: function(res) 
            [].forEach.call(scannerLaser, function(el) 
                $(el).fadeOut(300, function() 
                    $(el).fadeIn(300);
                );
            );
            scannedImg.attr("src", res.imgData);
            scannedQR.text(res.format + ": " + res.code);
            console.log(res.code);
            document.getElementsByName('qrcode')[0].value = res.code;
            var kode= res.code;
            $('#kode_barang').text(': '+kode);
            $.ajax(
                url:" route('daftar_produk.scan') ",
                method:'GET',
                data:kode:kode,
                dataType:'json',
                success:function(data)
                  
                    $('.list').html(data.table_data)
                  
              );
            $('#myModal').modal('show');
        ,

这是控制器

public function cekScan(Request $req)
    
        $id = $req->get('kode');
        $output='';
        $produk = Produk::findOrFail($id)
        ->where('kode_barang', '=', $id)
        ->select('produks.*')
        ->first();

        $no = 0;
        $data = array();
        foreach ($produk as $list) 
            $no ++;
            $output .= '<tr><td>'.$no.'</td><td>'.$list->nama_barang.'</td><td>'."Rp.".format_uang($list->harga_jual).'</td><td>'.$list->stok.'</td><td><a type="button" data-stok=(('.$list->stok.')) data-id=(('.$list->id.')) data-nama=(('.$list->nama_barang.')) data-kode=(('.$list->kode_barang.')) data-harga=(('.$list->harga_jual.')) class="btn btn-primary btn-pilih" role="button">Insert</a></td></tr>';
        
        $data = array(
            'table_data' =>  $output
        );
        return json_encode($data);
    

这是路线

 Route::get('transaksi/scan', '\App\Http\Controllers\ProdukController@cekScan')->name('daftar_produk.scan');

我该怎么办错误说“jquery.min.js:2 GET http://localhost:8080/rezkastore1/%7B%7B%20route('daftar_produk.scan')%20%7D%7D?kode =2135758676 404(未找到)"

【问题讨论】:

js是否在外部js文件中?? 在外部 js 文件中是的 您不能在 js 文件中使用刀片语法。在 js 文件中使用相对或完整的 url。 【参考方案1】:

我不知道你是在 Laravel Blade View 中还是在单独的 JS 文件中编写 javascript 部分。如果你在 Laravel Blade 模板中编写它,你可以使用

    $.ajax(
        url:" route('daftar_produk.scan') ",

但我建议您在 AJAX 调用中编写完整的 URL。像这样进行 AJAX 调用:

$.ajax(
    url:"/transaksi/scan",
    method:'GET',
    data:kode:kode,
    dataType:'json',
    success:function(data) 
        $('.list').html(data.table_data)
    
);

除了使用findOrFail(),您可以使用find() 或常规where() 与错误处理程序,因为findOrFail() 如果找不到任何记录,将返回404 not found,这里是cekScan 函数

public function cekScan(Request $req)

    $id = $req->get('kode');
    $output='';
    $produk = Produk::where('kode_barang', '=', $id)->first();

    if (!$produk) 
        return json_encode(['table_data' => 'Barang Tidak Ditemukan']);
    

    $no = 0;
    $data = array();
    foreach ($produk as $list) 
        $no ++;
        $output .= '<tr><td>'.$no.'</td><td>'.$list->nama_barang.'</td><td>'."Rp.".format_uang($list->harga_jual).'</td><td>'.$list->stok.'</td><td><a type="button" data-stok=(('.$list->stok.')) data-id=(('.$list->id.')) data-nama=(('.$list->nama_barang.')) data-kode=(('.$list->kode_barang.')) data-harga=(('.$list->harga_jual.')) class="btn btn-primary btn-pilih" role="button">Insert</a></td></tr>';
    
    $data = array(
        'table_data' =>  $output
    );
    return json_encode($data);

马图尔努文

【讨论】:

是的,我尝试使用此 url:"/transaksi/scan" 的 url 代码,但错误说 jquery.min.js:2 GET localhost:8080/transaksi/scan/?kode=2135758676 404 (Not Found) 我的错误路线代码? 您的根 URL 是什么? http://localhost:8080/rezkastore1http://localhost:8080 ? 我正在使用这个localhost:8080/rezkastore1/transaksi/scan 尝试在&lt;head&gt; 部分中添加&lt;script&gt; var ajaxUrlScan = " route('daftar_produk.scan') ";&lt;/script&gt; 并将AJAX 中的url 更改为:url:ajaxUrlScan, 我在 ajax 中更改了 url 并在刀片中创建了一个全局变量路由,但错误仍然说 jGET localhost:8080/rezkastore1/transaksi/scan?kode=2135758676 404 (Not Found),有我的控制器代码错了?【参考方案2】:

似乎是 URL 的问题。

你不能访问JS文件中的路由。

在刀片中为 ajaxURL 创建一个全局变量,然后在 JavaScript 中使用。

<script>
var ajaxURL = ' route('daftar_produk.scan') ';
</script>
<script src="xyz.js"></script>

【讨论】:

js文件中ajaxURL的var怎么调用? $.ajax( url: ajaxURL, method:'GET', data:kode:kode, dataType:'json', success:function(data) $('.list' ).html(data.table_data) ); 使用全局变量 ajaxURL 代替路由。 我已经在 ajax 中更改了 url 并在刀片中创建了一个全局变量路由,但错误仍然说 jGET localhost:8080/rezkastore1/transaksi/scan?kode=2135758676 404 (Not Found),是我在控制器代码中出错了吗?

以上是关于ajax获取数据请求url未找到但已经存在,Laravel 8的主要内容,如果未能解决你的问题,请参考以下文章

服务器数据未通过 AJAX 请求在 PhoneGap 框架上传播

长时间 AJAX 请求后未找到 404

ajax对象。同步与异步及ajax发送请求

Phonegap Cordova Ajax 请求 404(未找到)错误

AJAX 请求获取“请求的资源上不存在‘Access-Control-Allow-Origin’标头”错误

Java请求一个URL。获取网站返回的数据。