2016-08-12 2 views
1

Итак, я разрабатываю версию oracle Linux Server версии 6.6 и недавно перешел на Apache 2.4 для своего веб-сервера. Я разрабатываю веб-службу Flask, поэтому я использую локальный WSGI-сервер Flask для выполнения всей моей отладки.Использование JQuery для получения JSON из Flask иногда возвращает null

В приложении у меня есть форма, и когда вы нажимаете кнопку отправки, она вызывает вызов JQuery $ .getJSON() для моего флекса. Затем в бэкэнд я возвращаю данные JSON и предупреждаю пользователя о данных. Проблема в том, что большую часть времени он возвращает null и не возвращает мои данные. В других случаях он возвращает мои данные, и все в порядке. Это работало отлично, когда я использовал локальный сервер WSGI. Когда-то я перешел на Apache, когда эта ошибка начала происходить, поэтому я считаю, что проблема связана с Apache.

Также я распечатываю данные json перед возвратом, поэтому я точно знаю, что он не возвращает нулевые данные, но я все еще получаю эту ошибку.

Мой 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:

Так я установил вопрос после того, как неделю копать. Похоже, мои запросы были отменены, прежде чем вернуться на веб-страницу. Итак, что я сделал, это e.preventDefault() в моей функции JavaScript.

так в моем HTML я изменить его на

<form onsubmit="restoreDB(event)"> 

и в моей JavaScript я добавил этот

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

Теперь веб-страница не перезагружается, и у него достаточно времени, чтобы ждать ответа , Наверное, это не самое лучшее решение, но я просто счастлив, что исправил его. Если кто-нибудь рекомендует что-нибудь лучше, это будет замечательно

+0

, пожалуйста, напишите свое решение как ответ на ваш вопрос и примите свой ответ таким образом, люди знают, что этот вопрос уже ответил –

ответ

0

Так что я исправил проблему, как неделю рытья. Похоже, мои запросы были отменены, прежде чем вернуться на веб-страницу. Итак, что я сделал, это e.preventDefault() в моей функции JavaScript.

так в моем HTML я изменить его

<form onsubmit="restoreDB(event)">

и в моей JavaScript я добавил этот

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

Теперь веб-страница не перезагружается, и он имеет достаточно времени, чтобы дождитесь ответа. Наверное, это не самое лучшее решение, но я просто счастлив, что исправил его. Если кто-нибудь рекомендует что-нибудь лучше, это будет здорово

Смежные вопросы