有一段代码结构为Selected X-> Selected Y-> Selected Z-> Load Ajax(请注意console.log(response);在 Ajaxe 中)
jQuery(document).ready(function(){
$('input:radio[name="item01_radio"]').change(function() {
$('input:radio[name="item11_radio"]').change(function() {
$('input:radio[name="radio_service"]').change(function() {
var service = $('input:radio[name="radio_service"]:checked').val();
var day_ajax = $('input:radio[name="item11_radio"]:checked').val();
var user_name = document.getElementById("user_name").value;
document.getElementById('item4').innerHTML = "";
var elem = document.getElementById('item4');
$.ajax({
type: "POST",
url: 'php/array_master_time.php',
data: {
"master": user_name, "date_name_general": day_ajax, "service": service
},
success: function(response)
{
var response = JSON.parse(response);
console.log(response);
},
error: function(jqXHR, exception)
{
if (jqXHR.status === 0) {
alert('НЕ подключен к интернету!');
} else if (jqXHR.status == 404) {
alert('НЕ найдена страница запроса [404])');
} else if (jqXHR.status == 500) {
alert('НЕ найден домен в запросе [500].');
} else if (exception === 'parsererror') {
alert("Ошибка в коде: \n"+jqXHR.responseText);
} else if (exception === 'timeout') {
alert('Не ответил на запрос.');
} else if (exception === 'abort') {
alert('Прерван запрос Ajax.');
} else {
alert('Неизвестная ошибка:\n' + jqXHR.responseText);
}
}
});
});
});
});
});
结果,我在输出中得到以下模式:如果我选择 X、Y、Z(显示console.log(response);1 次),那么我改变选择,假设 Y,然后我也选择 Z,那么它console.log(response);显示两次(总共,我已经在控制台中有三个输出),依此类推,以 1 为增量。如果我显示的结构没有错误并且不应该是这样,那么在我编辑问题并发布完整代码之后。
一切都很好,代码就足够了。
让我们用人类语言讲述这里发生了什么。
在具有名称的选定单选按钮的更改事件上,
item01_radio分配(但不执行)用于具有名称的选定单选按钮的更改事件的事件处理程序item11_radio。如果您现在再次更改选中的单选按钮的名称item01_radio,单选按钮item11_radio将被分配一个更相似的处理程序 - 将有item11_radio两个这样的处理程序附加到按钮。如果您现在更改名为 的选定单选按钮item11_radio,这两个处理程序都将被执行。在这个链条的更深处,同样的事情也会发生,只是更深一层。一个简单的经验法则是避免将事件处理程序放在其他事件处理程序中。例外是事件
$(document).ready。