背景信息無法通過jQuery填充下拉框
我有一些加載Web表單的PHP/HTML/JavaScript代碼。出於討論的目的,假設這個表單是「編輯小部件細節」頁面。 這個表格包含一個表...和一堆行。每行有一個下拉框 - 每行都有相同的一個下拉框 - 並且下拉列表的選定值是根據數據庫中先前保存的數據確定的。
問題
下拉列表的下降不是由.append()填充調用我做,我不知道爲什麼。
代碼
下面是我的邏輯的事件順序:
PHP邏輯 - 通過需要被列入表中的每個記錄循環...並創建一個空盒像這樣:
for ($i=0; $i < count($w_details['tc']); $i++) { .... //logic to build basic table structure including: echo "<td><select placeholder='Domain:' name='domain" .$i ."' id=domain" .$i ."'></select></td>"; echo "<input type='hidden' class='domainvals' id='hidden_domain" .$i . "' name='hidden_domain" .$i. "' value='" .$wdetails['tc'][$i]['destdomain'] . "'/>"; ... }
然後,一旦我頁完蛋渲染,我有這樣的邏輯,我的document.ready部分:
//populate domain list.
$.ajax({
url:"<?php echo site_url('domain/domainlist');?>",
type:'POST',
dataType:'json',
success: function(res) {
//loop through results
var htmlstring = "<option value='' disabled selected>Select the Domain</option>";
for (var key in res) {
if (res.hasOwnProperty(key)) {
htmlstring += "<option value=" + res[key]['domain'] + ">" + res[key]['domain'] + "</option>";
}
}
//find every hidden input that is storing a domain value
$('.domainvals').each(function (i, row) {
console.log($(this).val()) ;
$('#domain'+i).append(htmlstring);
//TODO: add logic to select the right value using $this.val();
});
},
error: function(xhr, req, err) {
//var err = eval("(" + xhr.responseText + ")");
console.log(err.Message);
}
});
我試過到目前爲止:
在F12調試窗口,我已經驗證了,我有一個「domain0」這樣的控制:
$("#domain0").find('option')
沒有錯誤信息出現(只是空數組/列表),所以我肯定已經創建它。我也可以看到窗體上的控件。
我試圖改變我的代碼,追加HTML硬編碼的名字,像這樣:
$('#domain0').append(htmlstring);
同樣,沒有錯誤,但它不填充列表。
任何建議,將不勝感激。我確定這很簡單,我只是想念。
因爲html已經動態添加jquery選擇器可能無法在DOM中找到它。嘗試如下所示:'$(document).find('#domain0')。append(htmlstring)' – bos570
我不明白的是,一旦文檔加載完成,您就會使用ajax來填充表單。但是,PHP也可以非常容易地執行此操作,''json_decode(file_get_contents('path/to/file.json'),true)'。我建議只將用戶事件綁定到ajax請求。 – Xorifelse
@ bos570,hm ...創建基本選擇的html不是動態的。只是列表的選項是通過jquery – Happydevdays