2015-06-18 2 views
1

Я использую jquery и php вместе с WordPress для доступа к данным из базы данных mysql.продолжить jQuery после загрузки данных mysql

Мне удалось получить эти данные, но хотелось бы, чтобы jquery подождал, пока все данные не будут восстановлены.

Ниже приведен соответствующий сегмент кода.

Обе команды предупреждения ничего не отображают, поскольку данные еще не закончили загрузку.

Как я могу перекодировать это?

jQuery(document).ready(function ($) { 
    load_qs('foo'); 
    alert($(".all-qa-free").val()); 
    ////////////////////////////////////////////////////////////////////////// 
    function load_qs(data) { 
     var data = { 
      action: 'load_question_set', 
      async: false, 
      cache: false, 
      qset_id: data 
     }; 

     $.post(the_ajax_script.ajaxurl, data, function (response) { 
      var mydb_data = $.parseJSON(response); 
      $("#all-qa").val(mydb_data.qa); 
      alert($(".all-qa-free").val()); 
      return; 
     }); 
    } 
}); 

ответ

0

Ajax-вызовы являются асинхронными, а JS выполняется синхронно. jQuery/JavaScript инициирует вызовы ajax и сразу переходит к следующей строке для выполнения. Он не ждет ответа от сервера.

Выполняйте всю обработку, которую вы хотите выполнить на ответе сервера в самой функции обратного вызова. В вашем случае:

function(response) {   
    var mydb_data = $.parseJSON(response); 
    $("#all-qa").val(mydb_data.qa); 
    alert ($(".all-qa-free").val()); 
    return; 
} 

В противном случае вы будете сталкиваться с этой проблемой. Попробуйте включить оповещение в функцию обратного вызова. Это определенно сработает.

Еще одна вещь: вы помещаете значение в id «# all-qa» и извлекаете данные из «.all-qa-free», проверьте, правильно ли вы это делаете.

- HappyCoding

0

Вы должны установить async: true в вашем АЯКС вызова.

Установка async в false означает, что оператор, который вы вызываете, должен завершиться до того, как вызывается следующий оператор в вашей функции. Если вы установите async: true, то этот оператор начнет выполнение, и следующий оператор будет вызываться независимо от того, завершен ли оператор async.

+0

Спасибо, я установил async: true, но, к сожалению, я получаю тот же результат. – user1763812

+0

убедитесь, что значение $ (". All-qa-free") имеет значение. просто комментарий load_qs ('foo'); и проверить. – sarath

+0

Он имеет ценность. Для этого сообщения я удалил ненужные вещи. В моем фактическом коде используется $ ("# all-qa"). Val (game_data.qa); затем немного позже: alert ($ ("# all-qa"). val()); который ничего не отображает. Текстовое поле html отображает ожидаемое содержимое. – user1763812

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