jQuery $. birden fazla görüşme GET

1 Cevap php

Ben., Bir php dosyasına GET bazı bilgi almak ve üzerinde bazı hesaplamalar yapmak bu yüzden iki ayrı $ yapabilirim jquery öğrenme ve bu yazdı ediyorum. Ben her şeyi yapar ve gereken değeri verir belirli bir php dosyası oluşturabilirsiniz anlıyorum, ama ben bu php dosyasını ben bilgi almak için gereken herhangi bir zaman yeniden kullanmak daha mantıklı olacağını düşündüm.

Ben bir işlevi bu var ve ben ilk $ nasıl emin değildi. Bitmesi için, ikinci $ çalıştırmak sonra, bir değişkene eklemek, bekle GET. Kendisine değişken geçmek ve hesaplama yapmak GET. Onun yerine ben doğru olduğunu düşünmüyorum hangi onları birlikte iç içe. İşte kodudur.

    $.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

        });


    });

Bunu yapmak için kolay bir yolu var mı?

1 Cevap

Bazı düzeyde yuva onları.

Nedeniyle Ajax (A = asenkron) asenkron doğası, orada gerçekten sadece kod durdurmak için hiçbir yolu 1. Yani geri arama işlem yapmak zorunda.

Alabileceğiniz en iyi yerine geri çağrıları çağrılan bir işlev uygulayarak, bu yüzden iç içe değil, ama mantık yine iç içe.

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. well you can, with synchronous mode, but that's nasty, it stops everything