2014-09-29 66 views
1
var CustomerBoxesLoad = function() { 

    var handleAjaxBoxesSelectedCountry = function() { 

     $.ajax({ 
      type: "POST", 
      url: 'ajax/selectbox/country_selected.php', 
      dataType:'json', 
      success: function(data) { 

       var select = $("#countryCodeBox"), options = ''; 
       select.empty();  

       options += "<option value='0'>Select ...</option>";    

       for(var i=0;i<data.length; i++) 
       { 
        options += "<option value='"+data[i].id+"'>"+ data[i].name +"</option>";    
       } 

       select.append(options); 

      } 
     }); 

    } 

    var handleAjaxBoxesCustomerType = function() { 

     $.ajax({ 
      type: "POST", 
      url: 'ajax/selectbox/customer_type.php', 
      dataType:'json', 
      success: function(data) { 

       var select = $("#customerTypeBox"), options = ''; 
       select.empty();  

       options += "<option value='0'>Select ...</option>";  

       for(var i=0;i<data.length; i++) 
       { 
        options += "<option value='"+data[i].id+"'>"+ data[i].name +"</option>"; 
       } 

       select.append(options); 

      } 
     });  


    } 


    return { 
     //main function to initiate the module 
     init: function() { 

     handleAjaxBoxesSelectedCountry(); 
     handleAjaxBoxesCustomerType(); 

     } 

    }; 

}(); 

我有一個從PHP文件調用的函數。在PHP文件的末尾我打電話Ajax的功能:在腳本文件中調用第二個函數

jQuery(document).ready(function() {  
     CustomerBoxesLoad.init(); 
    }); 

所有Ajax的選擇框填土工程好。現在我想從(a href =「」)標籤觸發Ajax腳本。但功能不會觸發像這樣:

a href="javascript:handleAjaxBoxesSelectedCountry();">Refresh Select Box 

這個JavaScript的參考不工作!

+0

創建全球範圍內的包裝功能那會調用你的方法,並用它來代替。 – 2014-09-29 11:41:26

回答

0

添加其他功能來回報您:

return { 
    //main function to initiate the module 
    init: function() { 
     handleAjaxBoxesSelectedCountry(); 
     handleAjaxBoxesCustomerType(); 
    } 

    handleAjaxBoxesSelectedCountry: function() { 
     handleAjaxBoxesSelectedCountry(); 
    } 
}; 

和 'A' 標籤:

<a href="javascript:CustomerBoxesLoad().init();return false;">STH</a> 
+0

我不想使用CustomerBoxesLoad()事件。我需要在這個函數'handleAjaxBoxesSelectedCountry()'中調用子函數。 – Faith 2014-09-29 12:10:16

+0

根據您的代碼,「CustomerBoxesLoad」是您聲明的函數,它返回包含另一個名爲「init」的函數的類/對象。所以要調用init函數返回函數「CustomerBoxesLoad」,我們需要先調用這個函數,然後從返回的對象中調用init函數。 – 2014-09-29 12:33:34

+0

請注意,CustomerBoxesLoad函數適用於窗口加載事件。沒有問題。現在我正在尋找一種方法來重新加載JavaScript文件中的函數'handleAjaxBoxesSelectedCountry'函數。 – Faith 2014-09-29 13:06:50

0

我解決了它自己:

return { 

    //main function to initiate the module 
    init: function() { 

     handleAjaxBoxesCountry(); 
     handleAjaxBoxesCustomerType(); 

    }, 
    init_country: function() { 
     handleAjaxBoxesCountry(); 
    }, 
    init_type: function() { 
     handleAjaxBoxesCustomerType(); 
    }  

}; 
相關問題