【问题标题】:how to create a new div of json response array from controller如何从控制器创建一个新的 json 响应数组 div
【发布时间】:2020-03-17 04:44:21
【问题描述】:

我有一个案例,想根据从json响应获得的元素div创建一个div元素我在控制台数据中检查成功传递给视图刀片,错误是根据获得的json响应添加新元素div失败。有人可以帮忙吗?

我的代码

public function getIDpotongan($id)
{
    $data = array();
    $list = PotonganPenggajianModel::where('nip', $id)->get();
    foreach ($list as $row) {
        $val = array();
        $val[] ='<h3> ' . "'" . $row['jenis_potongan'] . "'" . '</h3>';
        $data[] = $val;
    }
    $output = array("data" => $data);
    return response()->json($output);
}

AJAX

$('#nama').on('change', function () {
    var optionText = $("#nama option:selected").val();
    $.ajax({
        url: "<?php echo url('/'); ?>" + "/getidpotongan/" + optionText,
        type: "GET",
        dataType: "JSON",
        success: function (data) {
            alert(data);
            $('#potonganku').html(data);
        },
        error: function (request, status, error) {}
    });
});

刀片

 <div id="potonganku" class="form-group row"> </div>

【问题讨论】:

  • 错误是什么?
  • 分享你的刀片文件的代码。以及您将 Ajax 代码放在哪里?在同一个文件中还是分开它的一个单独的刀片?
  • 我编辑了我的问题

标签: ajax laravel eloquent


【解决方案1】:

您正在为每个 foreach 创建一个新的空 $val = array(); 数组。让我们把它放在外面。

所以你的控制器是:

 public function getIDpotongan($id)
{
    $data = array();
    $list = PotonganPenggajianModel::where('nip', $id)->get();
    $val = array();
    foreach ($list as $row) {
        $val[] ='<h3> ' . "'" . $row['jenis_potongan'] . "'" . '</h3>';
        $data[] = $val;
    }
   $output = array("data" => $data);
    return response()->json($output);
}

【讨论】:

    【解决方案2】:

    在这种情况下,最好的方法是在客户端构建标记。从控制器返回原始 JSON 数据,然后通过 JS 构建 HTML。

    控制器:

    public function getIDpotongan($id)
    {
        return response()->json([
            'data' => PotonganPenggajianModel::where('nip', $id)
                ->select('jenis_potongan', 'some_field')
                ->get(),
        ]);
    }
    

    JS

    $('#nama').on('change', function () {
        var optionText = $("#nama option:selected").val();
    
        var buildHTML = function (data) {
            var html = '';
    
            for (i in data) {
                html += '<h3>' + data[i].jenis_potongan + '</h3>';
                // someting with data[i].some_field
            }
    
            return html;
        };
    
        $.ajax({
            url: "<?php echo url('/'); ?>" + "/getidpotongan/" + optionText,
            type: "GET",
            dataType: "JSON",
            success: function (response) {
                $('#potonganku').html(buildHTML(response.data));
            },
            error: function (request, status, error) {}
        });
    });
    

    【讨论】:

    • 使用这个可以解决,但如果不只是控制器中的 jenis_tunjangan 怎么办??
    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 2020-02-26
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多