PHP动态加载的数据在DOM / JavaScript中无法识别


PHP Dynamically Loaded Data Not Recognised In DOM / By JavaScript

我正在构建一个页面,在选择两个日期和几个下拉框之后,AJAX POST执行SQL:

window.onload = function(){
    Search();
}function Search(){
var CIAttributeCompletenessCITypeID = $('#CIType').val();
var CIAttributeCompletenessCISubTypeID = $('#CISubType').val();
var CIAttributeCompletenessCIAttributeID = $('#CIAttribute').val();
var CIAttributeCompletenessStartDate = $('#start').val();
var CIAttributeCompletenessEndDate = $('#end').val();
var CIAttributeCompleteness = {CIAttributeCompletenessCITypeID,CIAttributeCompletenessCISubTypeID,CIAttributeCompletenessCIAttributeID,CIAttributeCompletenessStartDate,CIAttributeCompletenessEndDate};
$.ajax({
type:'POST',
url:'/ITSMIS/getData/CIAttributes.php',
data:CIAttributeCompleteness,
success:function(html){
    $('#CIAttributeCompleteness').html(html);
    $(".data-table").DataTable();
}
})

查询返回结果后,PHP将基于每行的特定字段写入页面。

if(!empty($_POST["CIAttributeCompletenessCITypeID"]) && !empty($_POST["CIAttributeCompletenessCISubTypeID"]) && !empty($_POST["CIAttributeCompletenessCIAttributeID"])){
$sql = "SELECT CIAttributeCompleteness.CIAttributeCompletenessPercentage, CIAttributeCompleteness.CIAttributeCompletenessMissing, CIAttributeCompleteness.CIAttributeCompletenessCompleted, CIAttributeCompleteness.CIAttributeCompletenessTotal, CIAttributeCompleteness.CIAttributeCompletenessDate, CIType.CITypeTitle AS CIAttributeCompletenessCITypeTitle, CISubType.CISubTypeTitle AS CIAttributeCompletenessCISubTypeTitle, CIAttribute.CIAttributeTitle AS CIAttributeCompletenessCIAttributeTitle FROM CIAttributeCompleteness INNER JOIN CIType ON (CIType.CITypeID = CIAttributeCompleteness.CIAttributeCompletenessCITypeID) INNER JOIN CISubType ON (CISubType.CISubTypeID = CIAttributeCompleteness.CIAttributeCompletenessCISubTypeID) INNER JOIN CIAttribute ON (CIAttribute.CIAttributeID = CIAttributeCompleteness.CIAttributeCompletenessCIAttributeID) WHERE CIAttributeCompleteness.CIAttributeCompletenessCITypeID = ".$_POST['CIAttributeCompletenessCITypeID']." AND CIAttributeCompleteness.CIAttributeCompletenessCISubTypeID = ".$_POST['CIAttributeCompletenessCISubTypeID']." AND CIAttributeCompleteness.CIAttributeCompletenessCIAttributeID = ".$_POST['CIAttributeCompletenessCIAttributeID']." AND CIAttributeCompleteness.CIAttributeCompletenessDate BETWEEN '".$_POST['CIAttributeCompletenessStartDate']."' AND '".$_POST['CIAttributeCompletenessEndDate']."'";$stmt = sqlsrv_query($conn, $sql);
while($obj = sqlsrv_fetch_object($stmt)){
echo "
<tr>
    <td>".date_format($obj->CIAttributeCompletenessDate, 'd/m/Y')."</td>
    <td>".$obj->CIAttributeCompletenessCITypeTitle."</td>
    <td>".$obj->CIAttributeCompletenessCISubTypeTitle."</td>
    <td>".$obj->CIAttributeCompletenessCIAttributeTitle."</td>
    <td>".$obj->CIAttributeCompletenessPercentage."</td>
    <td>".$obj->CIAttributeCompletenessMissing."</td>
    <td>".$obj->CIAttributeCompletenessCompleted."</td>
    <td>".$obj->CIAttributeCompletenessTotal."</td>
</tr>";
}

这将数据输出到页面fine中。然而,几乎没有JavaScript工作在data/HTML元素张贴。

这只是我尝试过的一个,它应该隐藏任何不符合搜索条件的行输入到文本框中:

var $rows = $('.data-table tr');
$('#search-y').keyup(function() {
var val = '^(?=.*''b' + $.trim($(this).val()).split(/'s+/).join('''b)(?=.*''b') + ').*$',
    reg = RegExp(val, 'i'),
    text;
$rows.show().filter(function() {
    text = $(this).text().replace(/'s+/g, ' ');
    return !reg.test(text);
}).hide();
});

基本上就像任何JavaScript都无法识别页面上有HTML输出。

把你希望运行的javascript放在Ajax的成功部分。然后dom应该拾取html。- Mueyiwa Moses Ikomi