esp32 - Ajax 获取多个值
esp32 - Ajax get multiple values
我正在尝试从我的 ESP32 获取多个值并在不刷新的情况下将它们显示在网页上 ajax。到目前为止,我在网上只找到了只更新一个变量的例子(见下面的例子),但我怎样才能更新多个变量?
我的 index.h 文件中的代码:
<script>
setInterval(function() {
// Call a function repetatively with regular interval
getData();
}, 500); //500mSeconds update rate
function getData() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("ADCValue").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "readADC", true);
xhttp.send();
}
</script>
在此示例中,ADCValue 是用响应文本编写的,但是如果我有多个值进来怎么办?
在 esp32 服务器中您需要响应 JSON 消息。像这样
{"var1": "value1", "var1": "value2"}
ESP32 中的示例代码
// Send headers
client.println("HTTP/1.1 200 OK");
client.println("Content-type: application/json");
client.println();
// Send http body
String var1 = "value1";
String var2 = "value2";
String jresp = "{\"var1\":\""+var1+"\",\"var1\":\""+var2+"\"}";
client.println(jresp);
client.println();
最后,在你的JS代码中,你可以做这样的事情
xhttp.onreadystatechange = function() {
if (http.readyState == 4) {
try {
var msg = JSON.parse(http.responseText);
var var1 = msg.var1;
var var2 = msg.var2;
// You got 2 values above
} catch (e) {}
}
}
我正在尝试从我的 ESP32 获取多个值并在不刷新的情况下将它们显示在网页上 ajax。到目前为止,我在网上只找到了只更新一个变量的例子(见下面的例子),但我怎样才能更新多个变量?
我的 index.h 文件中的代码:
<script>
setInterval(function() {
// Call a function repetatively with regular interval
getData();
}, 500); //500mSeconds update rate
function getData() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("ADCValue").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "readADC", true);
xhttp.send();
}
</script>
在此示例中,ADCValue 是用响应文本编写的,但是如果我有多个值进来怎么办?
在 esp32 服务器中您需要响应 JSON 消息。像这样
{"var1": "value1", "var1": "value2"}
ESP32 中的示例代码
// Send headers
client.println("HTTP/1.1 200 OK");
client.println("Content-type: application/json");
client.println();
// Send http body
String var1 = "value1";
String var2 = "value2";
String jresp = "{\"var1\":\""+var1+"\",\"var1\":\""+var2+"\"}";
client.println(jresp);
client.println();
最后,在你的JS代码中,你可以做这样的事情
xhttp.onreadystatechange = function() {
if (http.readyState == 4) {
try {
var msg = JSON.parse(http.responseText);
var var1 = msg.var1;
var var2 = msg.var2;
// You got 2 values above
} catch (e) {}
}
}