2012-12-03 190 views
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 + F5 )2到3次,然後顯示數據。

回答

0

由於Ajax是我們需要首先完成一個AJAX任務的ASYC任務,並調用使用的是AJAX intialized陣列的功能,所以只需添加異步:在ajax中爲false

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

這將停止異步和其他methos將被稱爲只有當一個完整的,這對我的作品可能是有益的,以我的其他朋友,快樂編碼

0

刪除以下行 -

callback.call(null,temp);