当我同时在我的应用程序中调用多个ajax请求时(这是必要的),我遇到了非常烦人的情况。 我的后端响应是这样构建的:
{“一个”:{“ id”:“ 75068337”,“值”:“ 1”},“两个”:{“ id”:“ 7449461”,“值”:“ 1”},“事件“:[]}
但是有时候“事件”对象可以包含一些元素,然后看起来像
{“一个”:{“ id”:“ 75095540”,“值”:“ 1”,“结果”:“ 1”},“两个”:{“ id”:“ 7452784”,“值” :“ 1”,“结果”:“ 1”},“事件”:{“ 1531501188”:“事件1”,“ 1531501405”:“事件2”,“ 1531504270”:“事件3”,“ 1531507336”:“事件4 “}}
现在,..每个ajax调用都会被触发,具体取决于是否选中了具有给定ID的复选框,并且它正在调用唯一的url,然后在成功后将响应值放入html元素中,这些值也由它们的ID标识。
主要麻烦在这里:选中复选框之一,并且他的响应给出带有元素的“事件”时,所有其他ajax调用都将它们带到它们的html元素。
当我通过输入ajax.php?id = 1-2-3后端分别检查每个响应时,会给我正确的响应,没有任何事件。
我的代码怎么了?
Ajax:
var idezy = "1-2-3"; // 1-2 - values needed in backend, 3 - html element ID
var identifier = "checkbox1"; // ID of checkbox to check if it's checked before calling ajax again
function bier(idezy, identifier) {
iczs = idezy.split('-');
$.ajax({
url: 'ajax.php?id=' + idezy,
dataType: "json",
success: function(results) {
$.each(results, function(index, value) {
if (index == "one") {
$('#oneb' + value["id"]).html(value["value"]);
$('#onew' + value["id"]).html(value["result"]);
}
if (index == "two") {
$('#twob' + value["id"]).html(value["value"]);
$('#twow' + value["id"]).html(value["result"]);
}
if (index == "events") {
$.each(value, function(idx, vale) {
$(vale).insertBefore($('table#eventy' + iczs[2] + ' tbody#eventz' + iczs[2] + ' > tr:first'));
});
}
});
if ($("#" + identifier).is(':checked')) {
bier(idezy, identifier);
}
}
});
}
<table>
<tbody>
<tr>
<td><input type="checkbox" id="checkbox1"></td>
<td>
<table id='eventy1'>
<thead>
<th>Event time</th>
<th>Event desc.</th>
</thead>
<tbody id='eventz1'>
<tr id='dummy'><td>time0</td><td>description0</td></tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox2"></td>
<td>
<table id='eventy2'>
<thead>
<th>Event time</th>
<th>Event desc.</th>
</thead>
<tbody id='eventz2'>
<tr id='dummy'><td>time0</td><td>description0</td></tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td><input type="checkbox" id="checkbox3"></td>
<td>
<table id='eventy3'>
<thead>
<th>Event time</th>
<th>Event desc.</th>
</thead>
<tbody id='eventz3'>
<tr id='dummy'><td>time0</td><td>description0</td></tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>