AJAX Jquery 调用未返回响应

AJAX Jquery call not returning response

您好,我正在 运行使用 Jquery 对 Flask 服务器进行 AJAX 调用,但一旦我 运行 就不会 returning 成功响应消息] :

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)

有人知道如何 return AJAX 成功响应吗?

编辑:我已经将 os.system() 中的命令替换为 ifconfigmkdir 一切正常并获得成功 response.This 命令 roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/mapname.yaml 启动一个node 而不是 运行 out.So 有没有办法 return 成功响应即使节点是 运行ning?

你的成功函数位置不对,试试这个。

$.ajax({ 
    url: '/test', 
    type: 'POST', 
    data: new_freq
  },
  success: function(response){
    console.log(response);
  },
  error: function(error){
    console.log(error);
  }
    
})

我觉得您只想启动启动文件,而不是等到它终止。如果是这种情况,那么您想在后台启动 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)