php - 多个表单无需重新加载页面
问题描述
我正在使用 php。每次用户发送匹配结果时,我都需要向服务器发送帖子,而无需重新加载页面
我一直在尝试jquery,但我做不到。
这是我的表格:
<?php
$sqlpartidos =mysqli_query($con, "SELECT * FROM partidoprode WHERE idfecha = '$idfecha';");
while($filapartidos = mysqli_fetch_array($sqlpartidos)){
echo '<div class="list-group-item list-group-item-action flex-column ">
<div>
<div class="row justify-content-center">
<div class="col-3" id="bloqueequipo">
<div><h5 class="nombreequipos">'.$filapartidos['nombrelocal']. ' '.' </div><div><img src="'.$filapartidos['imglocal'].'" alt="" class="imgequipos"></h5></div>
</div>
<div class="col-6" id="bloqueequipo"><form id="myForm" method="post"><input type="number" id="reslocal" name="reslocal" min="0" max="10" size="1"/> - <input type="number" id="resvisitante" name="resvisitante" min="0" max="10" size="1"/><input type="hidden" name="idpartido" id="idpartido" value="'.$filapartidos['id'].'"/><input type="hidden" name="idfecha" id="idfecha" value="'.$filapartidos['idfecha'].'"/><div id="botondiv"><input type="submit" value="Submit" /></div></form> <div id="results"></div></div>
<div class="col-3" id="bloqueequipo">
<div><h5 class="nombreequipos">'.$filapartidos['nombrevisitante']. ' '.' </div><div><img src="'.$filapartidos['imgvisitante'].'" alt="" class="imgequipos"></h5></div>
</div>
</div>
</div>
<div class="col-12 text-muted nombreequipos"><small>'.$filapartidos['fecha'].'</small></div>
</div>';
}
?>
编辑:我试图这样做。
function SubmitFormData() {
var idpartido = $("#idpartido").val();
var idfecha = $("#idfecha").val();
var reslocal = $("#reslocal").val();
var resvisitante = $("#resvisitante").val();
$.post("enviar_jugada.php", { idpartido: idpartido, idfecha: idfecha, reslocal: reslocal, resvisitante: resvisitante },
function(data) {
$('#results').html(data);
$('#myForm')[0].reset();
});
}
和输入
<input type="button" id="submitFormData" onclick="SubmitFormData();" value="Submit" />
解决方案
上面的代码非常混乱并且充满了错误(正确缩进你的代码会极大地帮助你!)但也许下面的方法可能会有所帮助?
如果您使用printf
orsprintf
等,您可以创建看起来非常干净的标记,其中包含插入变量的占位符 - 这使得 imo 更容易阅读。删除您在循环中生成的所有 ID 属性 - 您通常不需要它们,因为您可以使用querySelector
和兄弟选择器访问 HTML 元素。通过这种方式,您可以捕获提交按钮的(节点)列表并远程分配事件处理程序,而不是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>
推荐阅读
- r - 导入栅格堆栈会返回较大的 NA 值
- php - Search for an item using a dropdown list in Laravel that returns the results onto a view
- html - 可使用占位符编辑的 div 内容
- pandas-profiling - Pandas 分析 KeyError
- python - Python 与 Podio 的集成
- angular - Transloco - 如何在运行时添加语言
- excel - 在下拉更改时获取单元格内容
- regex - 使用正则表达式捕获 Linux 用户字符串
- xaml - 如何在 Xamarin Forms 中包含来自上方的弹出窗口
- ios - 在 AppCenter 上构建 iOS 应用和 watchOS 应用失败