jQuery post / Ajax, одна кнопка находит различные значения таблицы - PullRequest
0 голосов
/ 30 марта 2020

Я создал код, который отображает некоторые данные из моей базы данных. И тогда пользователь может выбрать, хочет ли он открыть одну из pdf files.

. Вот моя проблема:

Одна строка

, когда таблица содержит только одну строку, затем файл открывается идеально .

Две или более строк

если в моей таблице несколько строк, то ничего не происходит. . Нет ошибок , но также нет ответа

Я пытался использовать $(this).closest("tr"), но это не помогло

Мои файлы

displaySearchResults. php

<!--css -->
<link rel="stylesheet" href="resultTable.css">
<!-- Display  Results -->
<div class="header">
<h1>Αποτελέσματα  Αναζήτησης <img src="" width></h1>
<hr> 
</div>

<div class="result_table">
<table>
<div>
<th>Όνομα Ιδιοκτήτη</th>
<th>Περιοχή</th>
<th>Οδός / Θέση</th>
<th>Οικοδομικό Τετράγωνο (Ο.Τ)</th>
<th>Έτος Ανασκαφής</th>
<th>Αριθμός Σχεδιαστικού  Αρχείου</th>
<th>Λέξεις Κλειδία</th>
<th>Αρχαιολόγος</th>
<th>Όνομα Αρχείου</th>
<th>Μέγεθος Αρχείου</th>
<th>Open file</th>
<th>Download file</th>
</div>
<div>
<?php

    while  ($row = mysqli_fetch_assoc($result)){
?>
        <tr>
            <td><?php echo $row['owner_name']; ?></td>
            <td><?php echo $row['area']; ?></td>
            <td><?php echo $row['street']; ?></td>
            <td><?php echo $row['building_block']; ?></td>
            <td><?php echo $row['year']; ?></td>
            <td><?php echo $row['number']; ?></td>
            <td><?php echo $row['key_words']; ?></td>
            <td><?php echo $row['archeologist']; ?></td>
            <td><?php echo $row['filename']; ?>
            <input type="hidden" id='filename' value='<?php echo $row['filename']; ?>'></td>
            <td><?php echo floor($row['size']/1000);
            echo "KB"; ?></td>
            <td><button class="button1" id="button1">OPEN</button></td>
            <td><button class="button2" id="button2">DOWNLOAD</button></td>

        </tr>
<?php
}


?>
</div>
</table>
</div>
<p  id="open"></p>

<script>
        $(document).ready(function(){

            $("#button1").click(function(){
                //var extension = $(this).closest("tr").find(".Extension").text();
                var filename =  $("#filename").val();


                $.post("openFile.php", 
                {
                    filename: filename


                },function(data){
                    $("#open").html(data);

                });


           });
        });
</script>

openFile. php

<?php 
$filename = $_POST['filename'];
echo "<iframe src=\"$filename\" width=\"100%\" style=\"height:100%\"></iframe>";
?> 

1 Ответ

0 голосов
/ 31 марта 2020

Наконец я нашел свое решение. Проверьте правильность на 100%.

displaySearchResults

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!--css -->
<link rel="stylesheet" href="resultTable.css">
<!-- Display  Results -->
<div class="header">
<h1>Αποτελέσματα  Αναζήτησης <img src="" width></h1>
<hr> 
</div>

<div class="result_table">
<table>
<div>
<th>Όνομα Ιδιοκτήτη</th>
<th>Περιοχή</th>
<th>Οδός / Θέση</th>
<th>Οικοδομικό Τετράγωνο (Ο.Τ)</th>
<th>Έτος Ανασκαφής</th>
<th>Αριθμός Σχεδιαστικού  Αρχείου</th>
<th>Λέξεις Κλειδία</th>
<th>Αρχαιολόγος</th>
<th>Όνομα Αρχείου</th>
<th>Μέγεθος Αρχείου</th>
<th>Open file</th>
<th>Download file</th>
</div>
<div>
<?php
    $x = 0 ;

    while  ($row = mysqli_fetch_assoc($result)){
        $x = $x + 1;

?>
        <tr>
            <td><?php echo $row['owner_name']; ?></td>
            <td><?php echo $row['area']; ?></td>
            <td><?php echo $row['street']; ?></td>
            <td><?php echo $row['building_block']; ?></td>
            <td><?php echo $row['year']; ?></td>
            <td><?php echo $row['number']; ?></td>
            <td><?php echo $row['key_words']; ?></td>
            <td><?php echo $row['archeologist']; ?></td>
            <td><?php echo $row['filename']; ?>
            <input type="hidden" id='filename<?php echo $x?>' value='<?php echo $row['filename']; ?>'></td>
            <td><?php echo floor($row['size']/1000);
            echo "KB"; ?></td>
            <td><button id="button1<?php echo $x?>" class="button1">OPEN</button></td>
            <td><button id="button2<?php echo $x?>" class="button2">DOWNLOAD</button></td>

        </tr>

<?php
}


?>
<input type="hidden" id='buttonvalue' value='<?php echo $x; ?>'>


</div>
</table>
</div>
<p  id="open"></p>

<script>

function createCallback( i ){
  return function(){
    //alert('you clicked' + i);
    var filename =  $("#filename"+i).val();
                    $.post("openFile.php", 
                    {
                        filename: filename  
                    },function(data){
                        $("#open").html(data);

                    });


  }
  }

        $(document).ready(function(){
            var x = $("#buttonvalue").val();
            for(var i = x; i > 0; i--) {

                $("#button1"+i).click(createCallback( i ));


           }

        });
</script>

openFile. php

<?php 

$filename = $_POST['filename'];



echo "<iframe src=\"$filename\" width=\"100%\" style=\"height:100%\"></iframe>";

?>
...