我需要执行一个名为“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);
});
}
})
答案 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标记中。