jQuery函数执行顺序

jQuery function execution order

本文关键字:顺序 执行 函数 jQuery      更新时间:2024-01-04

我对$.get()函数的jQuery执行顺序有问题,或者可能缺乏理解。我想从数据库服务器中检索一些信息,以便在$.ready()函数中使用。众所周知,当get返回时,它会将数据传递给对数据执行某些操作的返回处理程序。在我的例子中,我想给ready处理程序函数中声明的变量分配一些值。但问题是,$.get()的返回处理程序直到ready退出后才执行。我想知道(a)我做得对吗/有没有更好的方法,或者(b)是否有办法解决这个问题(即,强制get-Rereturn处理程序立即执行或其他我不知道的修复程序)。我有一种感觉,这是关于JavaScript的一些收尾工作。

根据请求,我将发布一个我的意思的例子:

$(function() {
    var userID;
    $.get(uri, function(returnData) {
                   var parsedData = JSON.parse(returnData);
                   userID = parsedData.userID;
               });
  });

正如您所看到的,我在ready中声明了一个变量。然后使用对数据库的get调用来检索所需的数据。然后,我解析返回的JSON,并将userID分配给之前声明的变量。我已经用几个警报进行了测试。get之后的警报显示userID为未定义,但get的返回处理程序中的警报显示它已被分配。

$.get()是异步的。您必须使用回调来填充变量,并在请求完成后进行计算。类似于:

$(document).ready(function(){
    $.get( "yourUrl", function( data, textStatus, jqXHR ) {
        var myData = data; // data contains the response content
        // perform your processing here...
        registerHandlers( myData ); // you can only pass "data" off course...
    });
});
// your function to register the handlers as you said you need to.
function registerHandlers( data ) {
    // registering handlers...
}

$.get是一个ajax请求AJAX中的表示异步,因此脚本不会等待此请求完成,而是会进一步处理您的代码。

您可以使用完全回调,也可以使用$.ajax并将async设置为false来执行同步请求。

$.get()函数执行异步httprequest,因此每当该请求返回内容时,就会执行回调函数。您应该在$.ready()之外处理此回调

也许如果你准确地解释你想做什么,会更容易提供帮助!

你在寻找类似的东西吗

$(document).ready(function(){
    var variable1, variable 2;
    $.get('mydata.url', function(data){
        variable1 = data.mydata1;
        variable2 = data.mydata2;
    });
});

如果您首先声明变量,那么您可以在get调用中设置它们的值。您可以在get处理程序的末尾添加一个函数调用,以使用这些值调用单独的函数吗?如果没有一些例子,就很难再详细说明了。

在没有看到完整代码的情况下,我猜测您应该在$.ready外部声明您的变量;在CCD_ 8中将其初始化以用于初始页面加载;然后从CCD_ 9回调处理程序更新它。

例如

var x = ""; // declaration
$(document).ready(function() { x = "initial value"; });
$.get(...).success(function() { x = "updated from ajax"; });