Bonjour à tous,
Encore un petit pb avec Ajax. Dans un input submit, je cherche à ce que la fonction Ajax se déclenche uniquement lors de la validation de l'input au lieu de la déclencher périodiquement par un timer dans la fonction.
Est ce possible ?
Merci de vos réponses.
ci-joint les fichiers
type or paste code here
//fichier index.h
const char MAIN_page[] PROGMEM = R"=====(
<!DOCTYPE html>
<html>
<body>
<div>
//<div id="demo">
<h1>Automate STORE</h1>
<h2>Vitesse du vent : <span id="VALvent">0</span> km/h<br>
Vitesse MAX du vent pour retractation (Km/h): <span id="vmx">0</span><br>
Delai de retractation (en sec) : <span id="delrv">0</span><br>
</h2>
</div>
<script>
// fonction AFFICHAGE DU VENT EN COURS tt les 2 sec
setInterval(function()
{
getData();
}, 2000);
function getData() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
document.getElementById("VALvent").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "readVENT", true);
xhttp.send();
}
setInterval(function()
{
getDatav();
}, 2000);
// fonction AFFICHAGE du vent MAX pour retractation
function getDatav() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
document.getElementById("vmx").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ventm", true);
xhttp.send();
}
setInterval(function()
{
getDatad();
}, 2000);
// fonction AFFICHAGE du délais pour retractation
function getDatad() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
document.getElementById("delrv").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "delRT", true);
xhttp.send();
}
</script>
<FORM METHOD="POST"action="/submitv">
<input type="number" name="ventmax" value='VENT MAX' min='15' max='80'>
<input type="submit" value="Entrer valeur du VENT MAX (entre 15 et 80 Km/h )"><br>
</form>
<FORM METHOD="POST"action="/submitr">
<input type="number" name="delrval" value='delai' min='20' max='300'>
<input type="submit" value="Entrer delai pour retractation en sec (20 a 300)"><br>
</form>
</body>
</html>
)=====";
************************************************************************************
//Fichier .ino
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "index.h" //HTML et js
long randNumber; //pour test vitesse du vent
bool flstart = true; //flag restauration const. si redémarrage
String ventmax;
String delrval;
String delretrac;
int temp2; //pour tout faire
const char* ssid = "samb_LT";
const char* password = "05131325";
ESP8266WebServer server(80); //Serveur port 80
void handleRoot() {
server.send(200, "text/html", MAIN_page); //Envoi page principale
}
//affichage valeur du vent
void Af_vent() {
int a = randNumber; //pour test
String tt = "45";
String valeurVent = String(a);
server.send(200, "text/plain", valeurVent); //envoi valeur du vent
server.send(200, "text/plain", tt);
}
void Af_vmrt() { //affichage vitesse du vent max a la retractation
String temp1 = ventmax;
server.send(200, "text/plain", temp1);
Serial.print("affichage vmx : ");
Serial.println(temp1);
delay(200);
}
void Af_delrt() //affichage du DELAIS a la retractation
{
String delrv = delrval;
server.send(200, "text/plain", delrv);
Serial.print("affichage delrv : ");
Serial.println(delrv);
delay(200);
}
void Sub_vmaxrt() //traitement saisie vitesse vent maxi
{
ventmax = server.arg("ventmax");
server.send(200, "text/html", MAIN_page);
delay(500);
}
void Sub_delrt() //traitement saisie delai de retractation
{
delrval = server.arg("delrval");
server.send(200, "text/html", MAIN_page);
delay(500);
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
server.on("/", handleRoot); //Page Principale
server.on("/readVENT", Af_vent); //Traitement affichage du vent actuel
server.on("/submitv", Sub_vmaxrt); //saisie vitesse vent max a la retractation
server.on("/submitr", Sub_delrt); //saisie DELAIS a la retractation
server.on("/ventm", Af_vmrt); //affichage vitesse du vent max a la retractation
server.on("/delRT", Af_delrt); //affichage du DELAIS a la retractation
server.begin(); //Start server
Serial.println("HTTP server started");
}
void loop(void) {
server.handleClient(); //Handle client requests
randNumber = random(100); //pour test valeur vent
}