我在下面使用 javascipt 與 php (包括 html 表單)相結合遇到了挑戰。
單擊鏈接時,它僅從回圈中提交一個值。即來自while回圈的第一個值。
此處提供了結果的螢屏截圖鏈接到影像。
從上面看,當我單擊任何其他鏈接時,它只會回傳第一個鏈接。
我需要的是基于單擊的每個鏈接發布值的鏈接。我的代碼在這里。
if ($result = $conn->query($query)) {
while ($row = $result->fetch_assoc()) {
$client_name = $row["client_name"];
echo "<form id='form_submit' action='index.php' method='post'>
<input type='hidden' name='name' value='$client_name'/>
<a href='#' onclick='submitForm(name)'>$client_name</a>
</form>
<script>
function submitForm(name) {
let form = document.getElementById('form_submit')
form.submit()
}
</script><br>";
}
$result->free();
} else
echo "no records found";
該表單旨在提交到由其他 php 檔案捕獲的同一頁面,該檔案檢查是否已發布值并從那里繼續執行某些操作,
接收 php 檔案根據單擊的鏈接提交的值從資料庫中查詢資料,
在這種情況下,單擊的鏈接僅提交第一項的值。
uj5u.com熱心網友回復:
您可以使用單個form而不是潛在的大量數字以更簡潔的方式做到這一點。沒有必要為導致原始問題的每個元素使用 ID 屬性 - 依靠事件目標來指示單擊了哪個元素/鏈接,或者像這里一樣,this在回呼中使用。
<form name='clients' method='post' action='index.php'>
<input type='hidden' name='name' />
<?php
if( $result = $conn->query($query) ) {
while( $row = $result->fetch_assoc() ) {
printf( '<a href="#">%s</a>', $row["client_name"] );
}
$result->free();
} else {
echo "no records found";
}
?>
</form>
<script>
const oForm=document.forms.clients;
const oInput=oForm.name;
oForm.querySelectorAll('a').forEach(a=>{
a.addEventListener('click',function(e){
oInput.value=this.textContent;
oForm.submit();
})
})
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/422454.html
標籤:
上一篇:Android-ActivityMainBinding顯示錯誤的活動
下一篇:我需要幫助添加事件偵聽器
