如何从python(flask)发送数据到javascript?

时间:2017-01-10 11:16:07

标签: javascript jquery python ajax flask

大家好,祝大家新年快乐!

我有一个实际问题: 在我的GUI上,我要求用户在单击“另存为新按钮”时使用提示方法指定新文档名称

    $("#btnSaveNew").on( "click", function() {
        var newScenarioName = prompt("Please enter new scenario name", "scenarioX");

    $.ajax({
                 url : 'http://' + document.domain + ':' + location.port + "/saveAsNew",
                 type : 'POST',
                 data : JSON.stringify({'data':data,'newName': newScenarioName}),
                 contentType: 'application/json;charset=UTF-8',
                 success: function (result) {
                            loadScenario();
                    },
            });

我的python-flask部分要求cloudant DB发送与指定名称匹配的文件ID,如果名称不存在,则根据metaData内容创建doc但如果存在,我没有解决方法来警告用户

newScenarioName = request.json["newName"]

file_id = getscenario(newScenarioName)
my_doc = my_db[file_id]

metaData = {
    'name': newScenarioName,
    'scenario': data
}

my_doc = my_db.create_document(metaData)

所以我想实现类似的东西

newScenarioName = request.json["newName"]

file_id = getscenario(newScenarioName)
my_doc = my_db[file_id]


if my_doc['name'].exist():
    scenario_exist = True

    ******************
    ** missing part **
    ******************

else:
    metaData = {
        'name': newScenarioName,
        'scenario': data
    }

    my_doc = my_db.create_document(metaData)

其中**缺失部分**包含对.js部分的发送指令,该指令修改了我可以添加的var,因此我可以创建一个条件,例如

        var newScenarioName = prompt("Please enter new scenario name", "scenarioX");
        if (newScenarioName === null || scenario_exist === True) {
            newScenarioName = prompt("Please enter new scenario name, previous one was null or already used", "scenarioX");
            }

并中止新的方案创建!

我看到了一个可能的解决方案:How to pass variable from python to javascript进行jQuery调用,但问题是,我没有对HTML / web-js部分进行编码,所以我有点迷失在jQuery的可能性中(并且非常技术性的,而非网络菜鸟友好的手册)

所以在python方面有一种方法可以创建一个像request.json ['key']这样的方法,但这是另一种方式(post.json ['key']?:p) 或者可以使用jQuery / Ajax方法调用值.js一边?

感谢您的耐心和阅读此问题并抱歉语法错误

编辑:我认为这样做的唯一方法是使用websockets,使用Jinja的模板在技术上对我来说似乎有点太多了,它更像是一个旁路而不是一个解决方案

1 个答案:

答案 0 :(得分:0)

好的我只是通过重新定义我的ajax方法来绕过我的问题,它在出错时回调函数

(component.class.name)!'unknown' == 'com.example.Something'