首页 > 解决方案 > 如何使用 AJAX 访问 laravel 雄辩的关系数据?

问题描述

我可以从 Laravel Blade 轻松访问我的关系数据。但是,每当我尝试从 AJAX 访问它们时,它都会显示未定义或错误。我已经尝试了所有方法,但无法解决。请帮忙。

我的控制器代码:

 public function store(Request $request){

    $task_name = $request->task_name;
    $empId = $request->empName;
    $catId = $request->catName;
    $desName = $request->desName;
    $start = $request->start_date;
    $end = $request->end_date;

    $inputs = array();
    $task_start_date = Carbon::parse($start)->format('Y-m-d');
    $task_end_date = Carbon::parse($end)->format('Y-m-d');


    $inputs['name']= $task_name;
    $inputs['user_id']= $empId;
    $inputs['cat_id']= $catId;
    $inputs['des']= $desName;
    $inputs['start_date']= $task_start_date;
    $inputs['end_date']= $task_end_date;


    $tasks = Task::create($inputs);
    $table =  "";

    $items = Task::all();

    foreach ($items as $item){

        $table .=" <tr>";
        $table .=" <td>";
        $table .=$item->taskCategory->name;
        $table .=" </td>";
        $table .=" </tr>";
        $table .="";
    }

    $temps = Task::with('taskCategory')->get();

    return response()->json([
        $tasks,
        'table'=>$table,
        'temps'=>$temps

    ]);

}

我雄辩的模型代码:

 public function taskCategory(){

    return $this->belongsTo(TaskCategory::class,'cat_id','id');
}

我在 laravel Blade 中的 ajax 代码:

 $(document).on('submit','#add_company_form', function(event){
        event.preventDefault();
        $.ajax({
            url:config.routes.task_post,
            method:"POST",
            data:new FormData(this),
            dataType:'JSON',
            contentType: false,
            cache: false,
            processData: false,
            success:function(data)
            {
                if(data.id!=""){
                    // toastr.success('We do have the Kapua suite available.', 'Turtle Bay Resort', {timeOut: 5000})
                    //console.log(data);
                    toastr.options = {
                        "debug": false,
                        "positionClass": "toast-bottom-right",
                        "onclick": null,
                        "fadeIn": 300,
                        "fadeOut": 2000,
                        "timeOut": 2000,
                        "extendedTimeOut": 2000
                    };

                    var rowCount = $('#order-listing >tbody >tr').length+1;
                    $.each(data.temps, function (key, val) {

                        // console.log(val.taskCategory.name);
                        $('#companyappend').append(`<tr class="unqcompany` + val.id + `">


        <td>` + rowCount + `</td>
        <td>` + val.taskCategory.name+ ` </td>
        <td>
            <button class="btn btn-outline-primary companyshow commonbtn" data-id="` + val.id + `" data-toggle="modal" data-target="#view_company_modal"><i class="ti-arrow-circle-right"></i></button>
            <button type="button" class="btn btn-outline-success editcompany commonbtn" data-companyname="` + val.name + `"  data-id="` + val.id + `" data-toggle="modal" data-target="#exampleModal"><i class="icon-pencil"></i></button>
            <button type="button" class="btn btn-outline-danger btn-icon-text deletecompany commonbtn"  data-id="` + val.id + `">
            <i class="icon-trash"></i>
            </button>
        </td>
    </tr>`);
                    });
                    toastr.success('Task was Created successfully');
                    $('#add_company_form').trigger('reset');
                    // console.log(data.table);
                    // $('#companyappend').html(data.table);
                }else{
                    alert("Failed to store");
                }
            }
        })
    });

这就是说我可以轻松地从刀片访问我的关系数据。但在 AJAX 中它会引发错误或未定义。请帮我。

标签: jqueryajaxlaraveleloquent

解决方案


推荐阅读