0

试图将 Laravel 变量从控制器(例如活动)传递到另一个 jquery 函数文件以进行 ajax 调用。通常在 php 中,我们可以使用campaign->id 来显示数据。我想传递给函数和 ajax 调用以显示在图表上。

索引.php

<div id="colouredBarsChart" class="ct-chart"></div>
<canvas id="myAreaChart" height="60"></canvas>

<script src="{{ asset('js/create-charts.js') }}"></script>

创建charts.js

( function ( $ ) {

var charts = {
    init: function () {
        // -- Set new default font family and font color to mimic Bootstrap's default styling
        Chart.defaults.global.defaultFontFamily = '-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
        Chart.defaults.global.defaultFontColor = '#292b2c';

        this.ajaxGetCampaignReportData();

    },

    ajaxGetCampaignReportData: function () {
        // var urlPath =  'http://' + window.location.hostname + '/get-campaigns-chart-data';
        var urlPath =  '/engagements/{{campaign->id}}/get-campaigns-report-chart-data'; <------ ***Here***
        var request = $.ajax( {
            method: 'POST',
            url: urlPath,
            data: reference: campaign->score, <------------ ***Here***
            dataType:"json",
    } );

        request.done( function ( response ) {
            // console.log( response );
            charts.createCompletedJobsChart( response );
        });
    },

    /**
     * Created the Completed Jobs Chart
     */
    createCompletedJobsChart: function ( response ) {
    }
};
charts.init();

})( jQuery );

4

1 回答 1

2

在 index.php 中将内容渲染成 js-variable-definition:

<div id="colouredBarsChart" class="ct-chart"></div>
<canvas id="myAreaChart" height="60"></canvas>
<script>
var my_backend_var = "{{ $campaign->score }}";
</script>
<script src="{{ asset('js/create-charts.js') }}"></script>

然后在您的 create-charts.js 文件中,您将可以访问 js var:

data: {reference:my_backend_var}

我添加了括号,因为您想将 js-object 添加到数据属性;)

于 2020-10-14T14:04:23.757 回答