簡體   English   中英

如何將數據從python(燒瓶)發送到javascript?

[英]How to send datas from python (flask) to javascript?

大家好,新年快樂!

我遇到一個實際問題:在我的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數據庫發送與指定名稱匹配的文件ID,如果名稱不存在,它將根據metaData內容創建文檔,但是如果存在,我沒有解決辦法來警告用戶

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 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");
            }

並中止新方案的創建!

我看到了一個可能的解決方案: 如何將變量從python傳遞到javascript ,以進行jQuery調用,但問題是,我沒有編寫HTML / web-js部分,因此我有點迷失了jQuery的可能性(以及技術性很強,而不是網絡友好的手冊)

因此,在python方面是否有一種方法可以制作類似request.json ['key']的方法,但又可以做到另一種方式(post.json ['key']?:p)或用jQuery調用.js值/ Ajax方法?

感謝您的耐心配合和閱讀此問題,對於語法錯誤,我們深表歉意

編輯:我認為這樣做的唯一方法是使用websockets,在Jinja中使用模板在技術上對我來說似乎有點過多,它比解決方案更能繞開

好吧,我只是通過重新定義我的ajax方法來繞過我的問題,如果出現錯誤,它會回調該函數

    function saveNewHandler() {
        var newScenarioName = prompt("file name");
        $.ajax({
                 url : 'http://' + document.domain + ':' + location.port + "/saveAsNew",
                 type : 'POST',
                 data : JSON.stringify({'path':scenarioFile, 'data':data, 'name': scenarioName, 'newName': newScenarioName}),
                 contentType: 'application/json;charset=UTF-8',
                 success: function (result) {
                            loadScenario();
                    }
            })
            .error(function(xhr, status, error) {
                console.log(xhr.responseText);
                saveNewHandler(); // ask for new file name 
            });
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM