нокаут-привязка данных с результатом ajax php не работает - PullRequest
0 голосов
/ 26 августа 2018

Я новичок в нокауте js, и я пытаюсь создать таблицу, данные которой поступают из базы данных с использованием php ajax .data-binding не работает с результатом ajax php, в то время как если я создаю таблицу на той же странице с переменной привязки данных Это работает с этой таблицей. Как я могу сделать результаты AJAX работать с нокаутом. Спасибо за помощь Ниже приведены мои коды загрузка данных php:

include("db.php");
    $result=mysqli_query($conn,"select * from codes");
$par='\$parent';
echo '<table class="table table-striped box"  >
<thead>
<tr>
<td align=center> <b>Code</b></td>
<td align=center><b>Starting Date</b></td>
<td align=center><b>Closing Date</b></td>
<td align=center><b>Select</b></td></tr></thead>
';
 echo '<tbody data-bind="foreach:{data:rows,as:\'Row\'}">';
echo "<tr>
        <td data-bind='text:Row.codes'></td>
        <td data-bind='text:Row.sDate'></td>
        <td data-bind='text:Row.eDate'></td>
        <td align=center><button data-bind='click:$par.selectRow' class='btn btn-orange'>Select</button></td>
        </tr>";
while($data = mysqli_fetch_row($result))
{   
    echo "<tr >";
    echo "<td align=center data-bind='text:Row.codes'>$data[1]</td>";
    echo "<td align=center data-bind='text:Row.sDate'>$data[2]</td>";
    echo "<td align=center data-bind='text:Row.eDate'>$data[3]</td>";
    echo "<td align=center><button data-bind='click:$par.selectRow'  class='btn btn-orange addd'>Select</button></td>";
    echo "</tr>";
}
echo "</tbody></table>";

и мой код ajax для загрузки:

$(document).ready(function(){
            $.ajax({
                type:"POST",
                url:"load.php",
                dataType:"html",
                success: function(response){
                    $("#codetable").html(response);
                }
            });
        });

и мой скрипт нокаута

$(document).ready(function(){
    function Row(codes,sDate,eDate){
        this.codes=codes;
        this.sDate=sDate;
        this.eDate=eDate;
    }
     var myRowViewModel = new function(){
        var current= this;
        this.SelectedRow = ko.observable(null);
        this.rows=ko.observableArray([
            new Row("45sd9e","10-08-2018",1000),
            new Row("45sd9e","10-08-2018",1000),
            ]);
        this.selectRow = function(Row){
            current.SelectedRow(Row)
            alert(Row.codes);
        }
}
    ko.applyBindings(myRowViewModel);
});

1 Ответ

0 голосов
/ 23 января 2019

Ну, теперь я выяснил, в чем проблема. Я изменил свои данные на json, и теперь он работает.

...