为什么函数Javascript不执行?

时间:2018-01-13 22:19:30

标签: javascript jquery html node.js ajax

我需要执行一个名为“send()”的函数,该函数包含一个ajax请求。 此函数位于ajax.js(包含在)中 Ajax的成功更新了我的图像的src。

这个功能运作良好,我不认为这是问题

但是当我加载页面时,send()函数没有被执行:o我不明白为什么。

加载后,我点击一个按钮,功能正常! (按钮的代码不在下面的代码中)

您可以看到HTML代码,我的函数和节点JS代码。谢谢你的帮助。

既然你的回答,现在的问题是:POST http://localhost:3000/index/gen/ net :: ERR_CONNECTION_REFUSED

执行脚本,问题是某些数据未初始化(Jquery滑块)

<!DOCTYPE html>

<html>
 <head>
    <meta charset="utf-8" />
    <title>Génération</title>
    <link rel="stylesheet" media="screen" title="super style" href="./styles/feuille.css">
    <script src="./script/ajax.js"></script>
    </head>
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>

    <body>
    <img src="images/map.jpg" class="superbg" alt="Carte du monde"/>

    <div id="main">
        <header>
            <div id="titre">  
                <h1>Generator</h1>
            </div>
        </header>                       

        <img id="image" src="" alt="Map">

        <script>
        send(); //in file ajax.js included in head
        alert($("#image").attr('src'));
        </script>

    <footer>
        Copyright CLEBS 2017, tous droits réservés.
    </footer>

    </body>
</html>

这里发送功能

function send(){
        var data = {"some data useless for my question"};
        alert("i'm in send() function");
        $.ajax({
        type: 'POST',
        url: 'index/gen/', //(It's node JS)
        data: data,
        success : function(j){
            var img = document.getElementById('image');
            img.src = j;
        },
        complete : function(j){
            },
        });       
    }

节点JS代码

app.post('/index/gen/',urlencodedParser, function (req,res){                    
    const { spawn } = require('child_process');
    const ls = spawn('./generateur/minigen.py', 
    req.session.donnees = ''
    ls.stdout.on('data', (data) => {
        req.session.donnees+=data.toString();
    }); 
    ls.stderr.on('datas', (datas) => {
        console.log("Erreur"+`stderr: ${datas}`);
    });
    var options = {         //Encapsulation des données à envoyer
      mode: 'JSON',
      pythonOptions: ['-u'],
      scriptPath: './generateur',               //ligne du dessous c'est les valeurs saisies par l'utilisateur
      args: ["Some data useless for my question"]
    };
    pythonShell.run('generation.py', options, function (err, results) { //Make the map to be download 
        if (err) throw err;
        res.send(req.session.donnees);
    });
}
})

3 个答案:

答案 0 :(得分:0)

您的代码中没有名为send的函数。你有一个名为envoi的函数。将function envoi()更改为function send()多语言编码的危害!

编辑:自从您更新了答案后,请尝试此操作。

<script>
$(document).ready(function() {
    send();
    alert($("#image").attr('src'));
});
</script>

答案 1 :(得分:0)

您可以使用onload事件。 调用此事件,页面完全被锁定,您可以访问send()函数。

https://www.w3schools.com/jsref/event_onload.asp

https://www.w3schools.com/tags/ev_onload.asp

例如:

<body onload="myFunction()"> 

<script>
    function myFunction() {
        send(); //in file ajax.js included in head
        alert($("#image").attr('src'));
    }
</script>

答案 2 :(得分:-1)

javascript的格式不正确。您的解决方案的范围需要使用JQuery进行管理。如果您只是想在页面加载时调用该函数,则可以在JQuery处理程序中调用该函数。此外,您的语法不正确。

<!DOCTYPE html>
<html>
 <head>
    <meta charset="utf-8" />
    <title>Génération</title>
    <link rel="stylesheet" media="screen" title="super style" href="./styles/feuille.css">


    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="./script/ajax.js"></script>
</head>
    <body>
    <img src="images/map.jpg" class="superbg" alt="Carte du monde"/>

    <div id="main">
        <header>
            <div id="titre">  
                <h1>Generator</h1>
            </div>
        </header>                       

        <img id="image" src="" alt="Map">

    <footer>
        Copyright CLEBS 2017, tous droits réservés.
    </footer>
     <script>
      $(function(){
         send(); //in file ajax.js included in head
         //  alert($("#image").attr('src')); <-- won't update inline due to async ajax
      })
     </script>
    </body>
</html>

此外,应在Async回调中更新图像标记警报。

  var data = {"some data useless for my question"}
    $.ajax({
        url: 'index/gen/',
        type: "POST",
        data: JSON.stringify(data),
        contentType: "application/json",
        complete: function(j) {
         $("#image").attr('src', j);
        }
    });

另请注意,您希望在自定义JavaScript之前加载JQuery。我不确定你在哪里打电话给Envoi,但这段代码可以帮到你。它会触发&#34; send()&#34;页面加载时的功能。此外,脚本标记应包含在Head标记中。