您好,我正在使用 Jquery 對 Flask 服務器運行 AJAX 調用,但運行后它不會返回成功響應消息:os.system("roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/"+mapname+".yaml")這是我提出的請求:$.ajax({ url: '/test', type: 'POST', data: new_freq, success: function(response){ console.log(response); }, error: function(error){ console.log(error); } })燒瓶服務器代碼, @app.route("/test" , methods=['POST']) def test(): mapname = request.get_data().decode('utf-8') os.system("roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/"+mapname+".yaml") return(mapname)有人知道如何返回 AJAX 成功響應嗎?os.system()編輯:我已經替換了里面的命令ifconfig,mkdir它一切正常并得到了成功響應。該命令roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/mapname.yaml啟動一個節點并且永遠不會用完。那么有沒有辦法即使節點正在運行也可以返回成功響應?
2 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
我覺得您只想啟動啟動文件,而不是等到它終止。如果是這種情況,那么您需要roslaunch在后臺啟動該命令,即將其與正在運行的 python 進程分離:
import subprocess
@app.route("/test" , methods=['POST'])
def test():
mapname = request.get_data().decode('utf-8')
subprocess.Popen(["roslaunch", "turtlebot3_navigation", "turtlebot3_navigation.launch", "map_file:=$HOME/maps/"+mapname+".yaml"])
return(mapname)

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
你的 success 函數位置錯誤,試試這個。
$.ajax({
url: '/test',
type: 'POST',
data: new_freq
},
success: function(response){
console.log(response);
},
error: function(error){
console.log(error);
}
})
添加回答
舉報
0/150
提交
取消