Приведенный выше код очень запутан и изобилует ошибками (отступ в вашем коде поможет вам безмерно!), Но, может быть, вам поможет следующий подход?
Если вы используете printf
или sprintf
и т. Д. может создать довольно чистую на вид разметку с заполнителями, в которые вставляются переменные, что значительно упрощает чтение imo. Удалите все атрибуты ID, которые вы генерируете в цикле - они обычно вам не нужны, так как вы можете получить доступ к элементам HTML, используя querySelector
и селекторы одного уровня. Таким образом, вы можете захватить (узел) список кнопок отправки и назначить обработчик событий удаленно, а не inline
Исходная разметка, как я говорю, грязная, поэтому следующее может быть неточным для вашегопервоначальные намерения.
while( $filapartidos = mysqli_fetch_array( $sqlpartidos ) ){
printf('
<div class="list-group-item list-group-item-action flex-column">
<div>
<div class="row justify-content-center">
<div class="col-3 bloqueequipo">
<div>
<h5 class="nombreequipos">%s</h5>
<img src="%s" alt="" class="imgequipos" />
</div>
</div>
<div class="col-6 bloqueequipo">
<form method="post">
<input type="number" name="reslocal" min="0" max="10" size="1" /> -
<input type="number" name="resvisitante" min="0" max="10" size="1" />
<input type="hidden" name="idpartido" value="%s" />
<input type="hidden" name="idfecha" value="%s" />
<div class="botondiv">
<input type="submit" />
</div>
</form>
<div data-id="results"></div>
</div>
<div class="col-3 bloqueequipo">
<div>
<h5 class="nombreequipos">%s</h5>
<img src="%s" alt="" class="imgequipos" />
</div>
</div>
<div class="col-12 text-muted nombreequipos">
<small>%s</small>
</div>
</div>
</div>
</div>',
/* assign the variables / data to the placeholders */
$filapartidos['nombrelocal'],
$filapartidos['imglocal'],
$filapartidos['id'],
$filapartidos['idfecha'],
$filapartidos['nombrevisitante'],
$filapartidos['imgvisitante'],
$filapartidos['fecha']
);//end printf
}//end while loop
<script>
const ajax=function(url,data,callback){
let xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(e){
if( this.status==200 && this.readySate==4 )callback( this.response );
}
xhr.open( 'POST', url, true );
xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
xhr.send( data )
}
Array.prototype.slice.call( document.querySelectorAll( 'form > div > input[type="submit"]' ) ).forEach( bttn=>{
bttn.addEventListener('click',function(e){
e.preventDefault();
let fd=new FormData( e.target.parentNode.parentNode );
let results=e.target.parentNode.parentNode.parentNode.querySelector('[data-id]');
ajax( location.href, fd, function(r){
alert(r);
results.innerText=r
});
});
});
</script>