0

по коду я написал ...IE7/8 дублируется AJAX запросы

function change_regione(handle) { 
// Hiding selects that we don't need 
jQuery("select#comune").hide(); 
jQuery("select#quartiere").hide(); 
if(jQuery("#regione").val() == '') { 
    jQuery("select#provincia").parent().hide(); 
    return 
} 

jQuery.ajax({ 
    url : WEBSITE_PATH + 'loadProvince.php', 
    type : 'GET', 
    dataType: 'json', 
    data : { 
     search_value : jQuery("#regione option:selected").attr("rel") 
    }, 
    success : function(result) { 
     var provinceOptions = "<option value=\"\">Tutte le province</option>"; 
     jQuery.each(result,function(i,el){ 
      provinceOptions += '<option value="'+ el.url +'" rel="'+ el.id +'">' + el.value.replace("~","") + '</option>'; 
     }); 
     jQuery("select#provincia").parent().show(); 
     jQuery("select#provincia").html(provinceOptions).show(); 
    }, 
error : function(request, status, error) { 
} 
}); 

}

IE7/8 запускает запрос AJAX дважды на OnChange() событие для избранных.

<select id="regione" name="regione" class="srhbox" onchange="change_regione(this)"> 
... 
</select> 

Firefox, Safari, Chrome, ведут себя правильно.

Что происходит? Вы когда-нибудь видели это поведение?

+0

Запрос оказался запущен в два раза в зависимости от апача бревен ... – Napolux

+1

я не видел, что и раньше, но я также никогда не использовать 'OnChange =«...»'. Если вы использовали jquery для привязки события с помощью '.bind'' .on' или' .change', я не думаю, что вы увидите эту проблему. –

+0

@KevinB lol, как видно из моего ответа ниже:^_^ – Neal

ответ

1

Ну, я не уверен, почему вы используете встроенные js с jQuery.

Просто используйте .change() событие JQuery в:

$('#regione').change(function() { 
    // Hiding selects that we don't need 
    jQuery("select#comune").hide(); 
    jQuery("select#quartiere").hide(); 
    if (this.value == '') { 
     jQuery("select#provincia").parent().hide(); 
     return; 
    } 

    jQuery.ajax({ 
     url: WEBSITE_PATH + 'loadProvince.php', 
     type: 'GET', 
     dataType: 'json', 
     data: { 
      search_value: jQuery("option:selected", this).attr("rel") 
     }, 
     success: function (result) { 
      var provinceOptions = "<option value=\"\">Tutte le province</option>"; 
      jQuery.each(result, function (i, el) { 
       provinceOptions += '<option value="' + el.url + '" rel="' + el.id + '">' + el.value.replace("~", "") + '</option>'; 
      }); 
      jQuery("select#provincia").parent().show(); 
      jQuery("select#provincia").html(provinceOptions).show(); 
     }, 
     error: function (request, status, error) {} 
    }); 
}); 
0

Я не знаю, почему он ведет себя так, как это, но у меня есть работа вокруг вас. Попробуй это.

var requestInProgress = false; // Variable to check if the request is in progress 
function change_regione(handle) { 

    if(requestInProgress){ 
    return; 
    } 

    requestInProgress = true; 
    // Hiding selects that we don't need 
    jQuery("select#comune").hide(); 
    jQuery("select#quartiere").hide(); 
    if(jQuery("#regione").val() == '') { 
    jQuery("select#provincia").parent().hide(); 
    return 
    } 

    jQuery.ajax({ 
     url : WEBSITE_PATH + 'loadProvince.php', 
     type : 'GET', 
     dataType: 'json', 
     data : { 
      search_value : jQuery("#regione option:selected").attr("rel") 
     }, 
     success : function(result) { 
      var provinceOptions = "<option value=\"\">Tutte le province</option>"; 
      jQuery.each(result,function(i,el){ 
       provinceOptions += '<option value="'+ el.url +'" rel="'+ el.id +'">' + el.value.replace("~","") + '</option>'; 
      }); 
      jQuery("select#provincia").parent().show(); 
      jQuery("select#provincia").html(provinceOptions).show(); 
      requestInProgress = false; 
     }, 
     error : function(request, status, error) { 
     } 
    }); 
} 
+0

Это одна из вещей, которые я бы хотел избежать, спасибо, однако ... – Napolux