如何从我的laravel控制器获取值并将其设置在公用文件夹中的javascript文件中?

时间:2018-02-11 12:18:00

标签: javascript laravel laravel-5 laravel-5.2

我正在使用laravel。我在控制器中有如下所示的功能。我想获得$update_tugas_id值并将其设置为公共文件夹中的javascript。你知道吗?

public function getTugasDetailUpdate(Request $request)
{   
    $update_tugas_id = $request->get("V_ID_PK");
    $getDataListPengikut = DB::select("EXEC dbo.GET_KEMENPAR_LIST_PENGIKUT '".$update_tugas_id."'");
    $getPengikut2 = DB::select("EXEC dbo.LOV_M_PENGIKUT");
    $msg["opt"] ="";
    $no=1;
    foreach($getDataListPengikut as $dtListPengikut):
        $msg["opt"] .= '<tr>
            <td><select class="form-control" id="name_'.$dtListPengikut->KODE.'" name="nameupdate[]" data-live-search="true" style="width:100%">
                <option value=""> --Silahkan Pilih-- </option>'; 
                    foreach ($getPengikut2 as $getPeng){
                      $msg["opt"] .=   '<option value="'.$getPeng->KODE.'"@if( '.$dtListPengikut->DESKRIPSI.'=='.$getPeng->KODE.') selected @endif>'. $getPeng->DESKRIPSI .'</option>'; 
                    } 
                $msg["opt"] .='</select>
            </td> 
            if ($no == 1){   
            $msg["opt"] .=   '<td><button type="button" name="add" id="addupdate'.$no.'" onclick="addMe(this);return false" class="btn btn-success"><b>+</b></button>
                </td>';
            }
            else{
                $msg["opt"] .=   '<td><button type="button" name="remove" id="removeupdate'.$no.'" onclick="removeMe(this);return false" class="btn btn-danger"><b>x</b></button>
                </td>';
            }
            $msg["opt"] .=  '</tr>';
            $no++;
            endforeach;
       echo json_encode($msg);
}

以下是我的javascript。我想将值设置为var optionS = $('#name_3').html();行3,因为我想用我从控制器获得的值进行更改。

var i=1;
function addMe(e){
var optionS = $('#name_3').html();
i++;
$('#dynamic_field_update').append('<tr id="row'+i+'" class="dynamic-added"><td><select class="form-control" id="name_3" name="nameupdate[]" data-live-search="true" style="width:100%">'+optionS+' </select></td><td><input type="text" name="ketupdate[]" placeholder="Keterangan" style="text-transform:uppercase" class="form-control ket_list" required /></td><td><button type="button" name="remove" id="newremoveupdate'+i+'" onclick="removeMe(this);return false" class="btn btn-danger btn_remove"><b>x</b></button></td></tr>'); 
    }

1 个答案:

答案 0 :(得分:1)

在控制器内部形成HTML然后将其发送回前端的请求通常是一种糟糕的方法,但要将其存储在javascript变量中,您可以这样做:

var optionS = '{!! $html !!}'; //{!! and !!} displays unescaped data

如果您希望在变量中存储non-HTML响应,可以这样设置:

var optionS = '{{ $variable }}'; //{{ and }} displays escaped data

但显示转发数据的最佳方法,如果该变量不长,则在HTML内部生成标记并添加data-username之类的属性,例如并将用户名放在那里,然后你可以用javascript获取它。

<div data-username="{{ $username }}"></div>

将控制器中的任何重要变量或HTML传输到视图并像上面一样使用它们通常是一个坏主意,您应尽可能避免使用它。