gpt4 book ai didi

javascript - 为什么 AJAX GET 请求只能工作一次?

转载 作者:行者123 更新时间:2023-12-01 00:20:48 28 4
gpt4 key购买 nike

我正在尝试运行一个脚本来切换 WebApp 上的一些电源插头,它工作得很好,但问题来了,它只能工作一次,我不明白为什么。我还认识到,当我调用该函数时,XHR 请求会永远持续下去,而不会立即收到响应。

这是我的 Node JS 服务器和 Web 应用程序上的函数:

 function ajaxChangePlug(num,state) {
$.ajax({
url: `/api/${num}/${state}`,
type: "GET",
data: {
state: state,
num: num
},
dataType: "json",
})
};
        function handle1(num,state){
ajaxChangePlug(num,state);
if (state === "on") {
document.getElementById("1").setAttribute( "onClick", `handle1(${num},'off')`);
document.getElementById("1").src=`/resources/${num}_on.png`
} else {
document.getElementById("1").setAttribute( "onClick", `handle1(${num},'on')`);
document.getElementById("1").src=`/resources/${num}.png`
}
};
server.get('/api/:num/:state', (req, res) => {
var state = req.params.state;
var num = req.params.num;
if(state === 'on'){
shell.exec(`/home/pi/mynode/${num}${state}_on.sh`);

}else{
shell.exec(`/home/pi/mynode/${num}${state}_off.sh`);
}
});

最佳答案

您应该像这样等待前端的响应:

$.ajax({
url: `/api/${num}/${state}`,
type: "GET",
data: {
state: state,
num: num
},
dataType: "json",
success: function (data) {
if (data.state === "on") {
document.getElementById("1").setAttribute("onClick", `handle1(${num},'off')`);
document.getElementById("1").src = `/resources/${num}_on.png`
} else {
document.getElementById("1").setAttribute("onClick", `handle1(${num},'on')`);
document.getElementById("1").src = `/resources/${num}.png`
}
}
})

在您的后端,您应该发送如下响应:

server.get('/api/:num/:state', (req, res) => {
var state = req.params.state;
var num = req.params.num;
if (state === 'on') {
shell.exec(`/home/pi/mynode/${num}${state}_on.sh`);
res.send('on');
} else {
shell.exec(`/home/pi/mynode/${num}${state}_off.sh`);
res.send('off')
}
});

关于javascript - 为什么 AJAX GET 请求只能工作一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59444574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com