jquery $ .GET多次调用

时间:2009-03-26 00:17:18

标签: php jquery ajax

我正在学习jquery并写了这个,所以我可以将两个单独的$ .GET写入一个php文件,检索一些信息并对其进行一些计算。我知道我可以创建一个特定的php文件来完成所有事情并返回我需要的值,但我认为在我需要检索信息的任何时候重用这个php文件会更有意义。

我在函数中有这个,我不知道怎么做第一个$ .GET,等待它完成,将它附加到变量,然后执行第二个$ .GET将变量传递给它并做计算。相反,我将它们嵌套在一起,我认为这是不对的。这是代码。

    $.get("selectdb.php", { 'id':nsname, 'q':'basecomplexity','table':'switchers'  }, function(data)
    {

        $('#switchtotal'+lastIndex).html(data); //sets data to #switchtotal

        $.get("selectdb.php", { 'id':nsname, 'q':'sources','table':'switchers'  }, function(data)
        {
            var val1 = $('#switchtotal'+lastIndex).html();
            var answer = ((parseFloat(nszones)*parseFloat(data))+parseFloat(val1))*parseFloat(nsquant);
            $('#switchtotal'+lastIndex).html(answer.toFixed(2)); //calculates formula and displays

        });


    });

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

你必须将它们嵌套在某个层面。

由于Ajax的异步特性(A =异步),没有办法真正停止代码 1 。所以你必须在回调中进行处理。

你能得到的最好的方法是实现一个在回调函数中被调用的函数,因此它们不是嵌套的,但逻辑仍然是嵌套的。

jQuery(function($){ 

function dbselect( opts, callback ){ 
   $.get("select.php", opts, callback ); 
}

function  handle_sources( data ){ 
   var val1 = $('#switchtotal'+lastIndex).html();
   var answer = ((parseFloat(nszones)*parseFloat(data))+parseFloat(val1))*parseFloat(nsquant);
   $('#switchtotal'+lastIndex).html(answer.toFixed(2)); //calculates formula and displays
}
function handle_basecomplex ( data ){ 
     $('#switchtotal'+lastIndex).html(data); //sets data to #switchtotal
     dbselect( { 'id':nsname, 'q':'sources','table':'switchers'  } , handle_sources ); 
}

dbselect( { 'id':nsname, 'q':'basecomplexity','table':'switchers'  }, handle_basecomplex ); 

});

<子> 1。你可以,同步模式,但这是令人讨厌的,它停止一切