0

このコードにはcallback undefinedエラーがあります:

function getPacakage(callback){
var sendurl={address:'http://ip/bms/data.php?result=10&order=28'}
var temp_selpkg_group=[];
var temp=[];

    $.ajax({
        type:"GET",
        url:"dummycall.php",
        data:sendurl,

        success:function(xml){              

            pkg_sel[0] = $(xml).find('test1').text();
            pkg_sel[1] = $(xml).find('test2').text();
            pkg_sel[2] = $(xml).find('test3').text();
            $(xml).find('packageitem').each(function(){
                temp_selpkg_group=[];
                temp_selpkg_group[0]=$(this).find('group').text();
                temp_selpkg_group[1]=$(this).find('Qty').text();
                temp[cnt_pkgitem]=temp_selpkg_group;
                cnt_pkgitem++;                  
            });

            callback.call(null,temp);
        },//sucess ends

        error: function(){
            alert("An error occurred while processing XML file.");
        }   //error ends..  

    }); //ajax ends...  

}

関数を呼び出す方法は次のとおりです。

$(document).ready(function (){
    $(function() {
        $( "#accordion" ).accordion();
    });     

    getPacakage(function(temp){
        sel_pkg_group=temp;
        fillOptionList();
    });

});//document ready ends..

Ctrlページ ( + ) を 2 ~ 3 回更新F5すると、データが表示されます。

4

2 に答える 2

0

次の行を削除します-

callback.call(null,temp);
于 2012-12-03T13:47:13.197 に答える
0

Ajax は非同期タスクであるため、最初に 1 つの ajax タスクを完了し、関数を呼び出して ajax で初期化された配列を使用する必要があるため、ajax にasync:falseを追加するだけです。

 $.ajax({
        type:"GET",
        url:"dummycall.php",
        data:sendurl,
        async: false,
        success:function(xml){  ..............

これは非同期を停止し、他のメソッドは 1 つが完了したときにのみ呼び出されます。これは私にとってはうまくいき、他の友人に役立つかもしれません。

于 2012-12-04T12:15:39.533 に答える