2014-09-29 2 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:Call Second Function в скрипт-файле

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

Все ящики для заполнения ящиков Ajax хорошо работают. Теперь я хочу запустить сценарий Ajax из тега (href = ""). Но функция не будет срабатывать следующим образом:

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

ЭТА ссылка на JavaScript не работает!

+0

Создать функцию-оболочку в глобальном масштабе который будет вызывать ваш метод и использовать его вместо этого. –

ответ

0

добавить другую функцию возвращения:

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

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

и 'а' тег:

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

Я не хочу использовать событие CustomerBoxesLoad(). Мне нужно вызвать функцию sub в этой функции «handleAjaxBoxesSelectedCountry()». – Faith

+0

в соответствии с вашим кодом «CustomerBoxesLoad» - это функция, которую вы объявили, и возвращает класс/объект, содержащий другую функцию с именем «init». Поэтому, чтобы вызвать функцию init в ответ на функцию «CustomerBoxesLoad», нам нужно сначала вызвать эту функцию, а затем вызвать функцию init из возвращаемого объекта. –

+0

Обратите внимание: функция CustomerBoxesLoad работает в событии загрузки окна. Нет проблем с этим. Прямо сейчас я ищу способ перезагрузить функцию 'handleAjaxBoxesSelectedCountry' в файле javascript. – Faith

0

Я решил это сам:

return { 

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

     handleAjaxBoxesCountry(); 
     handleAjaxBoxesCustomerType(); 

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

};