как отсортировать таблицу по запросу ajax со страницы php - PullRequest
0 голосов
/ 25 января 2019

Я работаю на веб-сайте, который предоставляет таблицы, мой источник для таблицы из API, который предоставляет таблицу в форме JSON, и вы даете мне один пользовательский ключ для выполнения запроса.

план делает запрос ajax на моей первой странице A , которая отправляет параметр на другую php-страницу B , которая делает запрос curl в api и получает результат из этого запроса и установите его на первой странице A проблема в сортировке, я могу отсортировать таблицу, нажав на заголовок, что я и нашел в w3shcool, но я хочу, чтобы таблица уже сортировалась со страницы B

это код на странице A index.php

<html>
<body>
<select id="tablslist" onchange="myfunction()">
<option value="0" selected="selected">select table</option>
<option value="1">table1</option>
<option value="2">table2</option>
<option value="3">table3</option>
</select>
<p id=put_mytable_here></p>
<script>    
function myfunction(){
    var select_tabls = document.getElementById("tablslist")
    var user_select = select_tabls.options[select_tabls.selectedIndex].value;
    if (user_select === "0"){
    document.getElementById("put_mytable_here").innerHTML = "Please Select A Table";
    }
    else{
       var xmlhttp
       xmlhttp = new XMLHttpRequest();
       xmlhttp.onreadystatechange = function() {
       if (this.readyState == 4 && this.status == 200) {   
          document.getElementById("put_mytable_here").innerHTML= this.responseText;
       }
      }  
      xmlhttp.open("GET",  "gettable.php?para="+user_select, true);
      xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlhttp.send(null);
      }  
}
</script>
</body>
</html>

на странице B gettable.php код:

<?php 
$para = $_REQUEST["para"];
$get = curl_init();
curl_setopt($get, CURLOPT_URL, "https://apiserver.com/api/? 
request=get_table&table_num=$para&APIkey=***************");
curl_setopt($get, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($get, CURLOPT_HEADER, 0);
$table = curl_exec($get);
curl_close($get);
$tablejson = json_decode($table);
echo "<table id=myTable border='1'><th>#</th><th>Name</th>";
foreach ($data as $tablejson) {
  echo "<tr>";
  echo "<td>$row->data_cell_1</td>";
  echo "<td>$row->data_cell_2</td>";
  echo "<td>$row->data_cell_3</td>";
  echo "</tr>";
   }
echo "</table>";
?>

Я хочу, чтобы таблица, запрошенная из gettable.php, уже была отсортирована по #, но я не могу найти способ.

это код, который я нахожу в w3school

function sortTable() {
  var table, rows, switching, i, x, y, shouldSwitch;
  table = document.getElementById("myTable");
  switching = true;
  /*Make a loop that will continue until
  no switching has been done:*/
  while (switching) {
    //start by saying: no switching is done:
    switching = false;
    rows = table.rows;
    /*Loop through all table rows (except the
    first, which contains table headers):*/
    for (i = 1; i < (rows.length - 1); i++) {
      //start by saying there should be no switching:
      shouldSwitch = false;
      /*Get the two elements you want to compare,
      one from current row and one from the next:*/
      x = rows[i].getElementsByTagName("TD")[0];
      y = rows[i + 1].getElementsByTagName("TD")[0];
      //check if the two rows should switch place:
      if (Number(x.innerHTML) > Number(y.innerHTML)) {
        //if so, mark as a switch and break the loop:
        shouldSwitch = true;
        break;
      }
    }
    if (shouldSwitch) {
      /*If a switch has been marked, make the switch
      and mark that a switch has been done:*/
      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
      switching = true;
    }
  }
}

после добавления <th onclick=sortTable()>#</th> на gettable.php, если есть способ заставить эту функцию воздействовать на загрузку таблицы, не дожидаясь нажатия на #

спасибо

...