當我嘗試使用JavaScript更新我創建的頁面上的<select>
標記時,我遇到了包版廣告。我遇到的問題是這是一個管理風格的頁面,所以在一個頁面上有多個表單,每個表單通過PHP生成一個SQL數據庫中的條目。爲了更好地理解我所講的,這裏是我的項目的一些代碼:使用ajax/js更新多個選擇標記之一
<?php
$query = "SELECT * FROM tableA ";
$data = $PDOcon->query($query);
$rows = $data->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
$id = $row['id'];
$head = $row['head'];
$cont = $row['content'];
$app = $row['Product'];
$category = $row['CatID'];
Print "<form class='mgmt-ListView-Tall' action=\"#Anchor$id\" method=\"post\" width=\"60%\">
<input type=\"hidden\" name=\"id\" value=\"$id\" readonly />
<label for='pHead'>Heading: </label>
<input id='pHead' class='lbl-w25' name='pHead' value='$head' />
<label for='pCont'>Content: </label>
<input id='pCont' class='lbl-w20' name='pCont' value='$cont' />
<label for='pProd' >Product: </label>
<select id='pProd' name='pProd' class='pProd'>
<option value='0'>Product 1</option>
<option value='1'>Product 2</option>
</select>
<label for='pApp'>Application: </label>
<select id='pApp' name='pApp' class='pApp'>
</select>
</select>
<span><input class='mgmt-Button' id='editbtn' type=\"submit\" name='edit' value='Edit' /></span>
</form>";
}
?>
<script type="text/javascript">
$('.pProd').change(function(){
var string = this.value + ',' + '-1';
$.ajax({
url: 'scripts/get_app.php',
type: 'POST',
data: {get_option:string},
success:function(data){
document.getElementById('pApp').innerHTML=data; //This updates the select tag in the first form on the page, not the same form that the user was making changes in.
}
});
});
</script>
我有一個表(表B),其中包含與他們的產品鏈接的所有應用程序的列表,並且什麼我試圖目前正在設置頁面,以便如果用戶在生成的其中一個表單上的選擇字段中更改產品,則通過AJAX更新應用程序選擇標記。我可以通過使用document.getElementById
來更新頁面上的第一個表單,但我需要它使用與用戶正在修改的選擇標記相同形式的標識來更新標記(例如:用戶更改爲第四種形式的pProd標籤,第四種形式的pApp標籤得到更新)
我試圖調用$(this).next(".pApp").innerHTML=data;
,但是這看起來沒有找到具有正確類的標籤。我也嘗試使用closest()
和sibling()
無濟於事。我也曾嘗試引用id和類的結果相同,並且我搜索了周圍,找不到類似於此問題的任何解決方案。有沒有人有什麼建議?
這是因爲'ID '在頁面上應該是唯一的。在你的用例中,你有多個具有相同ID的行,並且當你選擇那個元素時,它只會得到你的第一個元素。使用'類',而不是需要指定正確的上下文'這個' –
我已經嘗試通過id和class引用,並沒有骰子 – MathewH