【问题标题】:How can i show the data from my request in my page如何在我的页面中显示我的请求中的数据
【发布时间】:2021-03-06 13:54:36
【问题描述】:

所以我一直在为我的作品集开发一个功能,其中关于我的页面基本上是一个带有标签的“文档”,当你点击一个标签时,该标签附带的内容就会出现。我遇到的问题是我不知道如何从我的 php 文件中获取数据到我的 html 中。所以基本上我得到了标签工作,我得到了 ajax 工作它到达 php 并且 php 从数据库中获取数据,但是我不知道如何显示这些数据。生病分享我的代码:

HTML:

    <?php 
include 'includes/header.inc.php'; 

?>
<main>
  <section class="banner">
    <div class="wrapper">
      <article class="about-me">
          <div class="about-box">
            <div class="about-tabs">
                <nav>
                    <ul>
                        <li class="tab-about tab 1"><a href="#">About me</a></li>
                        <li class="tab-work tab 2"><a href="#">Work experience</a></li>
                        <li class="tab-school tab 3"><a href="#">Education</a></li>
                        <li class="tab-other tab 4"><a href="#">Other cetrificates</a></li>
                    </ul>
                </nav>
            </div>
            <div class="about-content">
              <div class="content-welcome">
                <h4>Title</h4>
                <p>Have a look around by clicking on the tabs! </p>
              </div>
              <div class="content-about"></div>
              <div class="content-work"></div>
              <divc class="content-school"></div>
              <div class="content-other"></div>
            </div>
        </div>
      </article>
    </div>
<?php include 'includes/sidebarnav.inc.php'; ?>
<script src="js/abouttabs.js"> </script>
</main>
<?php include 'includes/footer.inc.php'; ?>

Javascript:

$(document).ready(function(){

    let activeTab ='';
    let tabNum = '';
    $(".tab-about").click(function() {
        if (activeTab == '') {
            $(".tab-about").addClass('active');
            activeTab = "about";
            return activeTab;
        } else {
            $(".active").removeClass('active');
            $(".tab-about").addClass('active');
            activeTab = "about";
            return activeTab;
        }
    });
    $(".tab-work").click(function() {
        if (activeTab == '') {
            $(".tab-work").addClass('active');
            activeTab = "work";
            return activeTab;
        } else {
            $(".active").removeClass('active');
            $(".tab-work").addClass('active');
            activeTab = "work";
            return activeTab;
        }
    });
    $(".tab-school").click(function() {

        if (activeTab == '') {
            $(".tab-school").addClass('active');
            activeTab = "school";
            return activeTab;
        } else {
            $(".active").removeClass('active');
            $(".tab-school").addClass('active');
            activeTab = "school";
            return activeTab;
        }
    });
    $(".tab-other").click(function() {
        if (activeTab == '') {
            $(".tab-other").addClass('active');
            activeTab = "other";
            return activeTab;
        } else {
            $(".active").removeClass('active');
            $(".tab-other").addClass('active');
            activeTab = "other";
            return activeTab;
        }
    });

    $('.about-tabs li').click(function(){
       
        switch (activeTab) {
            case 'about':
                tabNum = 1;
                
                break;
            case 'work':
                console.log('work');
                tabNum = 2;
                break;
            case 'school':
                console.log('school');
                tabNum = 3;
                break;
            case 'other':
                console.log('other');
                 tabNum = 4;
                break;
            default:
                console.log('oopsie');
                
                break;
        }
    });
    $('.tab').click(function(){
        let tab = tabNum;


        console.log(tab);
      
        jQuery.ajax({
              url: "testdit.php",
              type : "POST",
              data:{tab:tab},
              success:function(data){
                  
                 
                  console.log(data);
              },
              error: function(error)
              {
                  alert("couldnt be sent" + error); 
              }
          }); 
      });     
   
});

php:

这是我的数据库查询类:

<?php
require_once 'dbh.class.php';
 class QueryDatabase extends Database {



  public function getData($tablename, $selector, $value) {

    if (!isset($selector)){
        echo 'Something went wrong!';
    } else if ($selector == ''){
      $stmt = $this->connect()->query("SELECT * FROM $tablename");
      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){

        return $row;
      }
    }else {
      $stmt = $this->connect()->query("SELECT * FROM $tablename where $selector = $value");
      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){

        return $row;
      }
    }
    }


  public function setData($tablename, $colums, $data) {
    if (!isset($tablename) or !isset($data)) {
      echo 'Something went wrong!';
    } else {
      $sql  = "INSERT INTO $tablename";
      $sql .= $colums;
      $sql .= $data;
      $q = $this->connect()->prepare($sql);
      $q->execute();
    }

  }
  protected function changeData() {

  }
  protected function delData() {

  }
}

这是我的关于页面类:

<?php 

class About {

    public $activeTab = '';
    public $pageData = '';

    public function setTab($tab) {
        $this->activeTab = $tab;
    }
    
    public function getPage() {
        // vraag de content van de tab uit de database
        $getPageContent = new QueryDatabase();
        $this->pageData = $getPageContent->getData('about_page_content','tab',$this->activeTab);
       
        
        
    }   
   
} 

这是我实际处理 ajax 请求的 php 文件:

<?php
  include 'classes\dbh.class.php';
  include 'classes\querydatabase.class.php';
  include 'classes\about.class.php';

$tab = $_POST['tab'];
$try = new About();
$try->setTab($tab);
$try->getPage();
extract($try->pageData, EXTR_PREFIX_SAME, "wddx");

echo $title;


exit;

所以我从提取中获取数据,例如当我回显 $title 时,我得到了正确的数据,但我不知道如何在我的 about 页面 html 中使用它

我希望我解释得正确,我不太清楚该怎么说。

【问题讨论】:

    标签: javascript php jquery ajax oop


    【解决方案1】:

    您可以进行以下更新来完成此操作:

    给目标的每个标签数据属性:

    <li data-target=".content-about" class="tab-about tab 1"><a href="#">About me</a></li>
    <li data-target=".content-work" class="tab-work tab 2"><a href="#">Work experience</a></li>
    <li data-target=".content-school" class="tab-school tab 3"><a href="#">Education</a></li>
    <li data-target=".content-other" class="tab-other tab 4"><a href="#">Other cetrificates</a></li>
    

    取出div后面的随机C如下图:

    <divc class="content-school"></div>
    

    为事件监听器获取目标 此外,您还需要删除所有点击处理程序,.tab 调用的处理程序除外。每个选项卡基本上都有 3 个点击处理程序,这会搞砸。

    $('.tab').click(function(){
      _target = $(this).data("target");
      $('.tab.active').removeClass('active');
      $(this).addClass('active');
    

    在成功函数中引用_target

    $(_target).html(data);
    

    【讨论】:

    • 谢谢你,我要去试试!很好地抓住了随机 c 顺便说一句大声笑没有注意到那个。编辑:好吧,所以我尝试了它并尝试 console.log _target 但它是未定义的
    • @FlorisKroeze,我更新了点击处理程序的答案。
    • 我看到了!它仍然说它是未定义的,感谢您清理我的代码,但没有意识到它可能会这么短哈哈编辑:没关系,我觉得我太累了,无法编写 atm 代码。我将数据目标添加到内容 div 中,您的代码效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多