Вход Регистрация
Файл: selemege.tk/ajax/ajaxselect.js
Строк: 64
<?php
function ajaxSelect(id) {
    var 
element = document.getElementById(id)

    var 
onLoaded = function(data) {
        var 
i=0
        
for(var key in data) {
            var 
label = data[key]
            
element.options[i++] = new Option(label, key)
        }
    }
    
    var 
onLoadError = function(error) {
        var 
msg = "Ошибка "+error.errcode
        
if (error.message) msg = msg + ' :'+error.message
        alert
(msg)
    }
    
    var 
showLoading = function(on) {
        
element.disabled = on
    
}

    var 
onSuccess = function(data) {
        if (!
data.errcode) {
            
onLoaded(data)
            
showLoading(false)        
        } else {
            
showLoading(false)
            
onLoadError(data)            
        }
    }
    
    
    var 
onAjaxError = function(xhr, status){
        
showLoading(false)
        var 
errinfo = { errcode: status }
        if (
xhr.status != 200) {
            
// может быть статус 200, а ошибка
            // из-за некорректного JSON
            
errinfo.message = xhr.statusText
        
} else {
            
errinfo.message = 'Некорректные данные с сервера'
        
}
        
onLoadError(errinfo)
    }

    
    return {
        
load: function(url) {
            
showLoading(true)

            while (
element.firstChild) {
                
element.removeChild(element.firstChild)
            }

            $.
ajax({
                
url: url,
                
dataType: "json",
                
success: onSuccess,
                
error: onAjaxError,
                
cache: false
            
})
        }
    }
}

$(
document).ready(function() {
    var 
select = ajaxSelect('ajax-select');
    
document.getElementById('ajax-select-load-options').onclick =
        function() { 
select.load('/ajax/php/n.php') }
    
    
document.getElementById('ajax-select-load-error').onclick =
        function() { 
select.load('/ajax/ui/error.php') }
    
});
?>
Онлайн: 0
Реклама