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が選択のためのonchange()イベントで二回AJAX要求を起動を要求重複しました。

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

Firefox、Safari、Chromeは正常に動作します。

何が起こっているのですか?あなたはこれまでにこの行動を見たことがありますか?

+0

リクエストがApacheのログに応じて二回起動することが証明された... – Napolux

+1

は私が前にいることを見ていないが、私はまた、使用することはありません 'のonchange =「...」'。 jqueryを使って '.bind'.on'または' .change'を使ってイベントをバインドした場合、私はあなたがこの問題を見るとは思わないでしょう。 –

+0

@KevinB笑以下の私の答えに見られるように:^ _^ – Neal

答えて

1

なぜ私はj​​Queryでインラインjsを使用しているのかわかりません。

ただ、jQueryの.change()イベントを使用します。それはこのように振る舞う理由を私は知らないが、私はあなたのために周りの仕事を持っている

$('#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