2017-01-10 14 views
0

みなさんこんにちは、幸せな新年! Python(フラスコ)から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-フラスコの一部が求める「新しいボタンを付けて保存」をクリックしたときに、私は、プロンプトの方法で新しいドキュメント名を指定するようにユーザーに求めます名前が存在しない場合は、指定した名前と一致するファイルのIDを送信するためにcloudant DBは、それがメタデータコンテンツに応じてドキュメントを作成しますが、それが存在する場合、私はそうはユーザーが

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) 

を警告する解決策を持っていません私はそのようなものを実装したいと思います

**欠けている部分が**私は、私は、このような

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

などの条件を作成し、中止することができます追加することができVARを変更するの.js部分に送信指示を含ん

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) 

新しいシナリオ作成!

私は可能な解決策を見つけました:How to pass variable from python to javascript jQueryコールを作成しましたが、事実は、私はHTML/web-jsの部分をコーディングしていないので、jQueryの可能性が失われています(web-noob-friendlyマニュアルではありません)

それでは、request.json ['key']のようなメソッドを作る方法がありますが、これは別の方法です(post.json ['key']?): p) jQuery/Ajaxメソッドで値.js側を呼び出すことはできますか?

はあなたの忍耐と、この問題を読み、

EDIT文法障害のため申し訳ありませんありがとう:私はそうするための唯一の方法は、WebSocketをを使用することであると思いますが、神社でのテンプレートの使用は、あまりにも少し技術的に思えます私のために多くの、それは

+0

[フラスコ-Socketio](httpsのソリューションよりもバイパスです。 //flask-socketio.readthedocs.io/en/latest/)あなたが探しているものかもしれないg for。 – MrLeeh

答えて

0

[OK]を、私はちょうど私の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 
      }); 
     } 
関連する問題