javascript - onchange使用ajax在表行中追加数据

标签 javascript php jquery ajax

我想根据 select 标记中选定的选项值更改表。但我也想将该结果附加到现有表行中,为此我能够将数据检索到表中但无法在 tbody 的内部 html 中附加新行只想知道如何附加行到 ajax 响应文本我已经试过了。

<script>
    function resInvoice(InvoiceVal){
        var xhttp;    
        if (InvoiceVal == "") {
            document.getElementById("InvoiceBody").innerHTML = "";
            return;
        }
        xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (xhttp.readyState == 4 && xhttp.status == 200) {
                document.getElementById("InvoiceBody").innerHTML="<tr>"+xhttp.responseText+"</tr>");
            }
        };
        xhttp.open("GET", "GetSelect.php?InData="+InvoiceVal, true);
        xhttp.send();
    }

</script>

<tbody id="InvoiceBody">
    <tr id="select">
        <td colspan="2">
            <select class='form-control select2' onchange="resInvoice(this.value)">          
                <?php 
                    $fqeyr="SELECT ItemID,LineItemName FROM `per_addnew_lineitem`";
                    $faddnew=mysqli_query($con,$fqeyr);

                    while($fnrow=mysqli_fetch_array($faddnew)){
                        $lname=$fnrow['LineItemName'];
                ?>

                <option value="<?php echo $fnrow['ItemID'] ;?>">
                    <?php echo $lname ; ?>
                </option>
                <?php } ?>         
            </select>
        </td>
        <td>
            <button type="button" class="btn btn-primary btn-xs" style="margin-top:12px;" data-toggle="modal" data-target="#AddNewLine">+ Add New Line Item </button>
        </td>
    </tr>
</tbody>

并在 GetSelect.php 中

if(isset($_GET['InData'])){
    $InData=$_GET['InData'];
    $InDataRes=mysqli_query($con,"SELECT * FROM `per_addnew_lineitem` where ItemID='$InData'");
    while($InvoiceD=mysqli_fetch_array($InDataRes)){
        echo '<td>'.$InvoiceD['LineItemName'].'</td>' ;
        echo '<td>'.$InvoiceD['Description'].'</td>' ;
        echo '<td>'.$InvoiceD['Calculation'].'</td>' ;
    }
}

最佳答案

试试这个

var new_row = "<tr>" + xhttp.responseText + "</tr>";
$("#InvoiceBody").append(new_row);

代替

 document.getElementById("InvoiceBody").innerHTML="<tr>"+xhttp.responseText+"</tr>"); 

关于javascript - onchange使用ajax在表行中追加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34451060/

相关文章:

javascript - appendChild 不适用于使用 window.open() 的新窗口

php - Dompdf 无法从 SVG 正确生成 pdf

php - Zend GData 上传文件到指定文件夹

php - mysql INSERT 没有做任何事情

javascript - 如何在下拉菜单中添加箭头

javascript - 在 JavaScript 中处理 iPad 的方向

javascript - Angular 反转模型

javascript - JavaScript 中的关系比较

javascript - 指定自定义搜索参数时,jqGrid 自定义 editfunc 不起作用

Javascript:对以零结尾的数字进行排序不起作用(4.0 5.0 等..)