【问题标题】:returning search results in a table using AJAX使用 AJAX 在表中返回搜索结果
【发布时间】:2015-07-18 16:34:01
【问题描述】:

我正在尝试使用 PHP 和 AJAX 在表格中写入搜索结果,但到目前为止我还没有这样做。每当我按下搜索按钮时,页面都会刷新并且我无法调试。但是,当我删除对 php 文件的 ajax 请求时,我能够确定“dienst”和“ziekte”的值存储在 js 文件中(它不会按应有的方式刷新)但是每当我尝试访问时php 文件,但是这不再起作用,因为它开始刷新(所有代码 unver var request=....

目标是:从一个表单中我得到 2 个值(“dienst”和“ziekte”),我使用这些值来运行一个简单的选择查询,该查询应该返回几行。然后,这些行应在 html 中的 tablerows 中作为搜索结果进行翻译。

代码:

search.js文件:

$('#searchButton').on('click', function() {
event.preventDefault();
var dienst = $('[name="dienst"]').val();
var ziekte = $('[name="dienst"]').val();

var request = $.ajax({
    url: "ajax/searchresult.php",
    type: "POST",
    data: { 'dienst=' + dienst + 'ziekte=' ziekte },
    dataType: "json"
});

request.done(function( msg ) {
  $('#searchresults').html(msg);
});

request.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus );
});

});

searchresult.php文件:

<?php

 include_once("classes/Db.class.php");
 include_once("classes/Patient.class.php");

 if (isset($_POST['ziekte'])) {

  try
   {
       $patient = new Patient();
       $patient->Dienst = $_POST['dienst'];
       $patient->Ziekte = $_POST['ziekte'];
       $results = $patient->SearchPatient();

       while($r = $results->fetch_assoc()){
                      echo "<tr>";

                      echo "<td><a href='profiel.php?username=".$r["username"]."'>". $r["voornaam"] . "</a></td>";
                      echo "<td><a href='profiel.php?username=".$r["username"]."'>". $r["achternaam"] . "</a></td>";
                      echo "<td><a href='profiel.php?username=".$r["username"]."'>". $r["username"] . "</a></td>";
                      echo "<td><a href='profiel.php?username=".$r["username"]."'>". $r["leeftijd"] . "</a></td>";
                      echo "<td><a href='profiel.php?username=".$r["username"]."'>". $r["beroep"] . "</a></td>";
                      echo "</tr>";
      }
   }
   catch(Exception $e)
   {
       $error = $e->getMessage();
   }
 }

?>

结果的 html 文件:

<div class="page-tables">
<!-- Table -->
<div class="table-responsive">
  <table cellpadding="0" cellspacing="0" border="0" id="data-table" width="100%">
    <thead>
      <tr>
        <th>Voornaam</th>
        <th>Achternaam</th>
        <th>Username</th>
        <th>Leeftijd</th>
        <th>Beroep</th>
      </tr>
    </thead>

    <tbody id="searchresults">

    </tbody>

  </table>
  <div class="clearfix"></div>
</div>
</div>
</div>

SearchPatient 函数

public function SearchPatient()
    {

            $db = new db('localhost', 'root', '', 'project');
            $res = $db->Search( "'" . $this->Dienst . "'", "'" . $this->Ziekte . "'" , "patient_tbl");
            return $res;

    }

数据库类:

function Search($dienst, $ziekte ,$from)
{
    //SELECT *, IF( dienst = 'Psychiatrie', 1,0 ) + IF( ziekte = 'ADHD', 2,0 ) AS score FROM `patient_tbl` ORDER BY score DESC
    $query = "SELECT *, IF( dienst = '" . $dienst . "', 1,0 ) + IF( ziekte = '" . $ziekte . "', 2,0 ) AS score  FROM `" . $from . " ORDER BY score DESC";

        $this->last_query = $query;

    if($this->mysqli->query($query))
    {
        return true;
    } else {
        return false;
    }
}

【问题讨论】:

  • 你的 $patient->SearchPatient();看起来像?
  • 这只是我的数据库的一个简单选择函数...应该返回一些用户行。我会用它更新我的帖子!
  • 如果将 console.log(msg) 放入 request.done 函数会得到什么?有结果吗?
  • 我无法检查,因为出于某种原因我的页面一直在刷新。仅在删除 var 请求代码后才会停止刷新。 var request = $.ajax({ url: "ajax/searchresult.php", type: "POST", data: { 'dienst=' + dienst + 'ziekte=' ziekte }, dataType: "json" });
  • 我认为部分问题在于您调用 searchresults.php 文件并期望它向您显示表格。使用 ajax 它应该只返回一些数据,然后你应该在你的 html 页面上显示你的表格。

标签: javascript php jquery mysql ajax


【解决方案1】:

在 search.js 中,$.ajax 数据应该是一个查询字符串( data: { 'dienst=' + dienst + '&ziekte=' ziekte } )或一个对象( data: { dienst:dienst, ziekte:ziekte }, )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多