首页 > 解决方案 > 如何显示数据以从 ajax 发布响应中选择选项以在 laravel 中查看

问题描述

我想显示从 ajax POST 中查看的选项。在浏览器控制台中,console.log(el.devc_name)可以显示。但是为什么它没有出现在 id 为 offerDropdown 的选项中?

    <form method="POST" name="formSellout" id="formSellout" action="/sellout/addserialnumber" style="color:#FFF">
        <div class="row">
            <div class="col-lg-4 col-md-6 col-xs-6">
                <input class="form-control ui-autocomplete-input" type="text" id="serial_number" name="serial_number" value="" placeholder="Fill The Serial Number"/>
            </div>
            <div class="col-lg-2 col-md-6 col-xs-6">
                <button class="btn btn-danger" type="submit" id="addSN" style="width: 100%">
                    <i class="dripicons-document-new"></i>
                    Insert Data
                </button>
            </div>
        </div><br/> 
        <div class="row">
            <div class="col-lg-4 col-md-6 col-xs-6">
                <select class="form-control" id="offerDropdown" name="offerDropdown">
                    <option> Offer </option>
                </select>
            </div>
        </div><br/> 

阿贾克斯

 $("#addSN").on("click", function(){
        event.preventDefault()
        $.ajax({
            method: "POST",
            url: "/sellout/addserialnumber",
            data: $("#formSellout").serialize(),
            success: function(response) { 
                if(response.length) {
                response.forEach(el => {
                    $("#offerDropdown").append(`<option value='${el.devc_name}'> ${el.devc_name}</option>`)
                    console.log(el.devc_name)
                    })
                }             
            },
            error: function(error) {

            }
        })
        $("#addSN").hide()
    })

控制器:

 public function addSerialNumber(Request $request)
    {
        $sn = $request->all();
        $offer = Product::select('devc_name')->where('sn_bundling', $sn['serial_number'])->get();
        return response()->json($offer);
    }

路线:

    Route::post('sellout/addserialnumber', 'SellOutController@addSerialNumber');

这是 我需要从 devc_name 字段发送数据以选择选项的数据库

标签: jqueryajaxlaravel

解决方案


你的代码几乎没问题。但是下面的代码根本没有意义。response.length返回整数值。但是在if(response.length)中,您检查了不可能的条件。因为reponse.length不提供布尔值,它提供整数。所以修改你的代码

$("#addSN").on("click", function(){
    event.preventDefault()
    $.ajax({
        method: "POST",
        url: "/sellout/addserialnumber",
        data: $("#formSellout").serialize(),
        success: function(response) { 
            if(response.length) {
            response.forEach(el => {
                $("#offerDropdown").append(`<option value='${el.devc_name}'> ${el.devc_name}</option>`)
                console.log(el.devc_name)
                })
            }             
        },
        error: function(error) {

        }
    })
    $("#addSN").hide()
})

修改后的代码

$("#addSN").on("click", function(){
        event.preventDefault()
        $.ajax({
            method: "POST",
            url: "/sellout/addserialnumber",
            data: $("#formSellout").serialize(),
            success: function(response) { 
                if(response.length > 0) {
                response.forEach(el => {
                    $("#offerDropdown").append(`<option value='${el.devc_name}'> ${el.devc_name}</option>`)
                    console.log(el.devc_name)
                    })
                }             
            },
            error: function(error) {

            }
        })
        $("#addSN").hide()
    })

推荐阅读