加载mysql数据后继续jQuery

时间:2015-06-18 10:33:11

标签: php jquery mysql wordpress

我正在使用jquery和php以及WordPress来访问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;
        });
    }
});

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您应该在ajax电话中设置async: true

将async设置为false意味着您调用的语句必须在调用函数中的下一个语句之前完成。  如果设置async:true,则该语句将开始执行,并且无论异步语句是否已完成,都将调用next语句。