我正在学习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
});
});
有更简单的方法吗?
答案 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。你可以,同步模式,但这是令人讨厌的,它停止一切