Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 定义函数而不立即调用它而不发生事件(单击/悬停…)_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 定义函数而不立即调用它而不发生事件(单击/悬停…)

Javascript 定义函数而不立即调用它而不发生事件(单击/悬停…),javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个非常庞大的jquery函数,为了让它更易于阅读,我想知道如何将它放在其他地方,并仅在另一个函数中调用它(更具体地说,在ajax调用中,我现在已经定义了它) 问题是,当我定义函数时,它会自动运行,我不希望这样。我希望它在ajax调用中运行,但不在那里定义它 以下是我的示例代码: $.ajax({ type: 'post', url: 'api/'+$("#id").val()+"/"+$("#from").val()+"/"+$("#to").val(), data

我有一个非常庞大的jquery函数,为了让它更易于阅读,我想知道如何将它放在其他地方,并仅在另一个函数中调用它(更具体地说,在ajax调用中,我现在已经定义了它)

问题是,当我定义函数时,它会自动运行,我不希望这样。我希望它在ajax调用中运行,但不在那里定义它

以下是我的示例代码:

$.ajax({
    type: 'post',
    url: 'api/'+$("#id").val()+"/"+$("#from").val()+"/"+$("#to").val(),
    data: {},
    success: function generateChart(data) {
        var results = JSON.parse(data);
        if (results.error == true) {
            var errCode = results.code;
            alert(errCode);
        }
        else {
            var chartjsTemp = [];
            var chartjsDate = [];
            for (var i = 0; i < results.length; i++) {
                chartjsTemp.push(results[i].probeTemp);
                chartjsDate.push(results[i].dateProbe);
            }
            var ctx = document.getElementById('myChart').getContext('2d');
            var button = $("#submitButton");
            submitButton.addEventListener("click", function(){
                myChart.destroy();
            });
            var myChart = new Chart(ctx, {
                type: 'line',
                data: {
                    labels: chartjsDate,
                    datasets: [{
                        label: 'temp',
                        data: chartjsTemp,
                        backgroundColor: "rgba(240,240,240,0.5)"
                    }]
                }
            });
        }
    }
});
$.ajax({
键入:“post”,
url:'api/'+$(“#id”).val()+“/”+$(“#from”).val()+“/”+$(“#to”).val(),
数据:{},
成功:函数generateChart(数据){
var results=JSON.parse(数据);
如果(results.error==true){
var errCode=results.code;
警报(错误代码);
}
否则{
var chartjsTemp=[];
var chartjsDate=[];
对于(var i=0;i

我想把我的“generateChart”函数放到其他地方。如果我把它放在“其他地方”,只执行“
success:generateChart()”
它将不工作,而是在页面加载时运行。

您应该能够将所有函数保存在变量中,而不必实际调用它们

下面是一个例子:

var myFunc=函数(param1){
console.log(param1);
}
$(函数(){
myFunc(“测试”);
myFunc('test2');
});

您应该调用一个外部函数,如下所示:

function extFunc(data){
  ...
}

$.ajax({
    type: 'post',
    url: 'xxx',
    data: {},
    success: function generateChart(data) {
      extFunc(data);
    }
});

只需将定义移到ajax调用之外:

function generateChart(data) {
    var results = JSON.parse(data);

    if (results.error == true) {
        var errCode = results.code;
        alert(errCode);
    } else {
        var chartjsTemp = [];
        var chartjsDate = [];
        for (var i = 0; i < results.length; i++) {
            chartjsTemp.push(results[i].probeTemp);
            chartjsDate.push(results[i].dateProbe);
        }
        var ctx = document.getElementById('myChart').getContext('2d');
        var button = $("#submitButton");
        submitButton.addEventListener("click", function(){
            myChart.destroy();
        });
        var myChart = new Chart(ctx, {
            type: 'line',
            data: {
                labels: chartjsDate,
                datasets: [{
                    label: 'temp',
                    data: chartjsTemp,
                    backgroundColor: "rgba(240,240,240,0.5)"
                }]
            }
        });
    }
} 



$.ajax({
    type: 'post',
    url: 'api/'+$("#id").val()+"/"+$("#from").val()+"/"+$("#to").val(),
    data: {},
    success: function(data) {
        generateChart(data);
    }
});
函数生成部分(数据){
var results=JSON.parse(数据);
如果(results.error==true){
var errCode=results.code;
警报(错误代码);
}否则{
var chartjsTemp=[];
var chartjsDate=[];
对于(var i=0;i
Show the code mate,我可以/可能已经给出了解决方案,而不是发表评论。问题是,当我定义函数时,它会自动运行-这不应该发生。请向我们显示代码。在
$(document).ready()函数之外定义它。如果没有一些代码片段,我们将无法帮助您。请显示一些您编写的代码。不明白,多么愚蠢,这是
function(data){generateChart(data);}
,我试图调用
generateChart()
是的,回调函数的函数名没有必要工作,你的回答让我看到我犯了一个非常愚蠢的语法错误;我忘了
数据
在generateChart内部…很高兴它对您有所帮助。:)是的,现在可以用了。我忘记了函数中的
数据
,控制台中出现了严重的不友好错误。啊。