2016-08-12 2 views
1

Oracle Linux Serverリリース6.6で開発していますが、最近私のWebサーバー用にApache 2.4に切り替えました。 FlaskのWebサービスを開発しているので、FlaskのローカルWSGIサーバーを使用してすべてのデバッグを行っていました。JQueryを使用してFlaskからJSONを取得する場合はnullを返す場合があります

アプリケーションでは、フォームがあり、送信ボタンをクリックすると、FlaskバックエンドへのJQuery $ .getJSON()コールが行われます。その後、バックエンドでJSONデータを返し、ユーザーに警告します。問題は、ほとんどの場合nullを返し、データを返さないということです。それ以外の時間は私のデータを返し、すべてが問題ありません。これは、私がローカルのWSGIサーバーを使用していたときに完全に機能しました。かつて私はこのエラーが起こったときにApacheに移行していたので、Apacheからの問題だと思っていました。

また、戻る前に私のjsonデータを印刷していますので、nullデータを返さないことを確認していますが、まだこのエラーが発生します。

私のHTML/JavaScriptコード

<div id="restore_submit" class="restore_submit" style="display:none;"> 
<form onsubmit="restoreDB()"> 
    Type the database ID and Snapshot ID of the database you want to restore 
    <br><br> 
    RDS ID:<br> 
    <input type="text" id="DbName2" name="DbName"> 
    <br> 
    Snapshot ID:<br> 
    <input type="text" id="snapshot_id" name="snapshot_id"> 
    <br><br> 
    <input type="submit" value="Restore"> 
</form> 
</div> 

function restoreDB() { 
    var DbName = document.getElementById('DbName2').value; 
    var snapshot_ID = document.getElementById('snapshot_id').value; 
    var check = confirm('Are you sure you want to restore ' + DbName); 
    if(check){ 
    $.getJSON('/restore_rds', { 
    Dbname: DbName, 
    snapshot_id: snapshot_ID 
    }, function(data) { 
     if(data){ 
      if(data && data.error){ 
       alert(DbName + " is being restored using this snapshot_id " + snapshot_ID); 
      } 
      else{ 
       alert(data.error); 
      } 
     } 
     else{ 
      alert("returned null"); 
      alert(data); 
     } 
    }); 
    } 
} 

私のPythonコード

#This is for the restore script 
@app.route('/restore_rds') 
#@login_required 

def restore_rds(): 
    DbName = request.args.get('Dbname') 
    snapshot_id = request.args.get('snapshot_id') 
    error = rds_action.restore_db(DbName, snapshot_id, rds) 
    if error: 
     error = str(error) 
    else: 
     error = 'empty' 
    print error 
    print jsonify(error = error) 
    return jsonify(error = error) 

EDIT:

だから私は掘るの一週間後などの問題を修正しました。私のリクエストがキャンセルされてからウェブページに戻るように見えます。だから私はJavaScript関数でe.preventDefault()をしていました。

はので、私のhtmlで私は

<form onsubmit="restoreDB(event)"> 

に変更し、私はJavaScriptで私は今、Webページがリロードされません。この

function restoreDB(e) { 
e.preventDefault(); 

を追加し、それが応答を待つのに十分な時間を持っています。おそらく最高の修正ではありませんが、私はそれを修正したばかりです。誰かが何か良いことを勧めたら、それはすばらしいことになるでしょう。

+0

あなたの質問への回答として修正を投稿してください。 –

答えて

0

私は1週間の掘削の後に問題を修正しました。私のリクエストがキャンセルされてからウェブページに戻るように見えます。だから私はJavaScript関数でe.preventDefault()をしていました。

はので、私のhtmlで私は今のWebページがリロードされません。この

function restoreDB(e) { e.preventDefault();

を追加

<form onsubmit="restoreDB(event)">

に、私はJavaScriptでそれを変更し、それが十分な時間にしています応答を待ちます。おそらく最高の修正ではありませんが、私はそれを修正したばかりです。誰かが何か良いことをお勧めしたら、それはすばらしいことになります

関連する問題