Javascript 另一个内部的自动执行函数

Javascript 另一个内部的自动执行函数,javascript,Javascript,这是我的密码。myArraysValues函数如何自动执行? 它是针对ChartJS SalesChart的。 当添加一个alertMyValues时,它会工作,如果我使用它,它不会工作 谢谢我不确定您所说的“自动执行”是什么意思,如果您想在页面加载时执行它,您可以在document ready事件中调用自定义代码/方法。但是请确保执行代码在ajax成功处理程序中呈现图表,因为异步调用中的数据将在该处理程序中可用,并且您可以安全地访问该处理程序 'use strict'; $(function

这是我的密码。myArraysValues函数如何自动执行? 它是针对ChartJS SalesChart的。 当添加一个alertMyValues时,它会工作,如果我使用它,它不会工作
谢谢

我不确定您所说的“自动执行”是什么意思,如果您想在页面加载时执行它,您可以在document ready事件中调用自定义代码/方法。但是请确保执行代码在ajax成功处理程序中呈现图表,因为异步调用中的数据将在该处理程序中可用,并且您可以安全地访问该处理程序

'use strict';
$(function () {

 var MyValues = []; //--> for Data
  function myArraysValues() {
      $.ajax({
          url: '/AdminLte/TestArray',
          type: 'Get',
          dataType: 'json',
          data: { test: 'Client_Call' },

          success: function (data) {
              for (var i = 0; i < 8; i++) {
                  MyValues.push(data[i]);
              }
          },
          error: function (data) {
              alert("error");
          },
      })
      return MyValues;
  }

});
//alert(MyValues);
var salesChartData = {

    labels: MyLabels,
    datasets: [
        {
        label: "Erledigt",
        fillColor: "rgb(0, 102, 0)",
        strokeColor: "rgb(0, 102, 0)",
        pointColor: "rgb(0, 102, 0)",
        pointStrokeColor: "#66ff33",
        pointHighlightFill: "#66ff33",
        pointHighlightStroke: "rgb((0, 102, 0)",
        data: MyValues
        },

另外,看起来您已经硬编码执行了循环以运行8次。我希望来自服务器的数据是一个至少包含8项的数组,这样您的代码就不会崩溃。

异步代码的工作方式稍有不同。}在结束之前,调用函数:$function{function myFunc{…}myFunc;不确定这里的问题。你说的自动执行是什么意思?你在哪里尝试执行它?你在哪里都不能调用该函数。@David我想这就是问题所在。不过,不要引用我的话!@David在页面加载后自动执行myArraysValues它不会崩溃。它实际上只有在我调用MyValues时才起作用函数本身.ajax之后的警报是异步的。因此,当响应可用时,在成功事件中使用它。
$(function () {

    getDataFromServerAndRenderChart();  

});

function getDataFromServerAndRenderChart()
{
    $.ajax({
          url: '/AdminLte/TestArray',
          type: 'Get',
          dataType: 'json',
          data: { test: 'Client_Call' },

          success: function (data) {
              var myValues=[];
              for (var i = 0; i < 8; i++) {
                  myValues.push(data[i]);
              }
              // use myValues array to initialize the chart HERE
          }
      })
}