mysql数据加载后继续jQuery

Posted

技术标签:

【中文标题】mysql数据加载后继续jQuery【英文标题】:continue jQuery after mysql data has loaded 【发布时间】:2015-09-03 22:47:38 【问题描述】:

我正在使用 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;
        );
    
);

【问题讨论】:

【参考方案1】:

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" 中获取数据,请检查您是否这样做正确。

-- 快乐编码

【讨论】:

【参考方案2】:

你应该在你的ajax调用中设置async: true

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

【讨论】:

谢谢,我设置了 async :true 但不幸的是我得到了相同的结果。 确保 $(".all-qa-free") 具有价值。只需评论 load_qs('foo');并检查。 它确实有价值。对于这篇文章,我删除了不必要的东西。我的实际代码使用了 $("#all-qa").val(game_data.qa);然后稍后: alert ($("#all-qa").val());什么都不显示。 html 文本框显示预期的内容。 确保 ajax 返回值。添加警报(mydb_data.qa);在 var mydb_data = $.parseJSON(response); 行之后

以上是关于mysql数据加载后继续jQuery的主要内容,如果未能解决你的问题,请参考以下文章

如何将mysql数据加载到电子应用程序中的jquery数据表中

如何像聊天室一样使用 JQuery 循环 mysql 查询? [关闭]

如何使用 jQuery、PHP 和 MySQL 加载 JSON 数据

使用 jQuery、PHP 和 MySQL 为单选按钮加载 JSON 数据

使用 jQuery、PHP 和 MySQL 为单选按钮加载 JSON 数据

如何在 PHP / MySQL 中使用 jQuery SlickGrid(加载服务器数据并保存更改)