首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX返回整个html --我怎么能只返回一个值?

AJAX返回整个html --我怎么能只返回一个值?
EN

Stack Overflow用户
提问于 2021-03-04 08:49:26
回答 1查看 49关注 0票数 0

(在第一个混乱的版本之后编辑)

我的AJAX正在返回header.php页面,我只希望它返回$result值0或1。我正在使用ajax调用我的generateTicket.php。在那里我想generateTickets,如果目前没有其他票证的话。如果生成成功,则应返回1,否则返回0。

但目前它正在用我的响应(0或1)返回我的header.php。如何防止返回header.php。

AJAX:

代码语言:javascript
复制
function generateTicket() {
  $.ajax({
    url: 'generateTicket.php',
    type: 'post',
    datatype: "json",
    data: {
      showid: <?php echo $showid ?>,
      seats: <?php echo $seats_json ?>
    },
    success: function(response) {
      alert(response);  
    }
  });
}

generateTicket.php:

代码语言:javascript
复制
<?php 
include('includes/header.php');

//Login prüfen
if (!$loggedIn) {
    header('Location: login.php');
    die();
}

//Variablen init
$userid = $_SESSION['userid'];
$showid = $_POST['showid'];
$seats = $_POST['seats'];
$result = 1;

//Für jeden Sitzplatz ein Ticket generien generieren
foreach($seats as $seat){
    //Datenbank Ticket laden
    $query = "SELECT * FROM  ticket_uebersicht WHERE Sitzplatz LIKE ? AND VorstellungID = ? LIMIT 1";
    $statement = $pdo->prepare($query);
    $statement->execute(array($seat, $showid));
    $row = $statement->fetch();

    //Prüfen ob Ticket exestiert. Wenn ja -> Marktplatzticket -> anpassen. Wenn nein -> Neues Ticket generieren
    if(!$row){
        $code = guidv4();
        $query = "INSERT INTO tickets (code, UserID, VorstellungID, Sitzplatz) VALUES (?,?,?,?)";
        $statement = $pdo->prepare($query);
        $statement->execute(array($code, $userid, $showid, $seat));
        continue;
    }else{
        if($row['marktplatz'] != 0){
            $code = guidv4();
            $marketplace = '0';
            $query = "UPDATE tickets SET UserID = ?, code = ?, marktplatz = ? WHERE Sitzplatz = ? AND VorstellungID = ? AND NOT marktplatz = 0 LIMIT 1";
            $statement = $pdo->prepare($query);
            $statement->execute(array($userid, $code, $marketplace, $seat,  $showid));
            
            if(!($row['UserID'] == -1)){
                $betrag = $row['preis'] - 2;
                $query = "INSERT INTO rueckerstattung (UserID, Betrag) VALUES (?,?)";
                $statement = $pdo->prepare($query);
                $statement->execute(array($row['UserID'], $betrag));
            }
            continue;
        }
        $result =  0; //Fehler
    }
    
}

echo json_encode($result);

//Generieren der Ticket ID (FREMDCODE)
function guidv4($data = null) {
    // Generate 16 bytes (128 bits) of random data or use the data passed into the function.
    $data = $data ?? random_bytes(16);
    assert(strlen($data) == 16);

    // Set version to 0100
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40);
    // Set bits 6-7 to 10
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80);

    // Output the 36 character UUID.
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
exit;
?>

header.php:

代码语言:javascript
复制
<?php
include('db_connect.php');
include('righthandler.php')
?>


<!DOCTYPE html>
  <html lang="de">
  <head>
    <title>DHBW Kino Website</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="css/style.css" rel="stylesheet">

    <!-- Insert Favicon to make it show in Tab -->
    <link rel="shortcut icon" type="image/x-icon" href="../img/favicon.ico">

    <!-- Latest compiled and minified CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    
    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <!-- Popper JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    
    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> 

    <!-- Schriftart -->
    <script src="https://use.fontawesome.com/releases/v5.0.8/js/all.js"></script>

    <!-- Bootstrap Table Pack -->
    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.css">
    <script src="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.18.2/locale/bootstrap-table-de-DE.min.js"></script>
    
  </head>

  <!-- Titel/ Header der Website-->
  <div class="jumbotron container text-center" style="margin-bottom:0">
      <img class="logo" src="../img/logo.png"  width="60%">
  </div>
    
  <!-- Navigationsleiste -->
  <nav class="navbar navbar-expand-sm bg-dark navbar-dark" >
    <div class="container col-md-12">
      <a class="navbar-brand text-warning" href="../index.php">DHBW Kino</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav me-auto">
          <li class="nav-item">
            <a class="nav-link" href="../index.php" style="color: #D3D3D3">Startseite</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="../anfahrt.php" style="color: #D3D3D3">Anfahrt</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="../info.php" style="color: #D3D3D3">Über uns</a>
          </li>
          <?php if($loggedIn) { ?> <li class="nav-item"> <a class="nav-link" href="../tickets.php" style="color: #D3D3D3">Tickets</a> </li> <?php } ?>
          <?php if(hasRight('CONTROL_PANEL')) { ?> <li class="nav-item"> <a class="nav-link" href="../controlpanel.php" style="color: #D3D3D3">Verwaltung</a> </li> <?php } ?>
        </ul>
      </div>
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav ms-auto">
          <?php if($loggedIn) { ?> <li class="nav-item"> <a class="nav-link" href="../profile.php" style="color: #D3D3D3">Profil</a> </li> <?php } ?>
          <li class="nav-item">
            <?php
            if($loggedIn) {
              ?>
                <a class="nav-link" href="../logout.php" style="color: #D3D3D3">Log Out</a>
              <?php
            } else {
              ?>
                <a class="nav-link" href="../login.php" style="color: #D3D3D3">Log In</a>
              <?php
            }
            ?>
          </li>    
        </ul>
      </div>  
    </div>
  </nav>

AJAX成功响应:(my index.php)

代码语言:javascript
复制
<!DOCTYPE html>
  <html lang="de">
  <head>
    <title>DHBW Kino Website</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="css/style.css" rel="stylesheet">

    <!-- Insert Favicon to make it show in Tab -->
    <link rel="shortcut icon" type="image/x-icon" href="../img/favicon.ico">

    <!-- Latest compiled and minified CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    
    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <!-- Popper JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    
    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> 

    <!-- Schriftart -->
    <script src="https://use.fontawesome.com/releases/v5.0.8/js/all.js"></script>

    <!-- Bootstrap Table Pack -->
    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.css">
    <script src="https://unpkg.com/bootstrap-table@1.18.2/dist/bootstrap-table.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.18.2/locale/bootstrap-table-de-DE.min.js"></script>
    
  </head>

  <!-- Titel/ Header der Website-->
  <div class="jumbotron container text-center" style="margin-bottom:0">
      <img class="logo" src="../img/logo.png"  width="60%">
  </div>
    
  <!-- Navigationsleiste -->
  <nav class="navbar navbar-expand-sm bg-dark navbar-dark" >
    <div class="container col-md-12">
      <a class="navbar-brand text-warning" href="../index.php">DHBW Kino</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav me-auto">
          <li class="nav-item">
            <a class="nav-link" href="../index.php" style="color: #D3D3D3">Startseite</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="../anfahrt.php" style="color: #D3D3D3">Anfahrt</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="../info.php" style="color: #D3D3D3">Über uns</a>
          </li>
           <li class="nav-item"> <a class="nav-link" href="../tickets.php" style="color: #D3D3D3">Tickets</a> </li>            <li class="nav-item"> <a class="nav-link" href="../controlpanel.php" style="color: #D3D3D3">Verwaltung</a> </li>         </ul>
      </div>
      <div class="collapse navbar-collapse" id="collapsibleNavbar">
        <ul class="navbar-nav ms-auto">
           <li class="nav-item"> <a class="nav-link" href="../profile.php" style="color: #D3D3D3">Profil</a> </li>           <li class="nav-item">
                            <a class="nav-link" href="../logout.php" style="color: #D3D3D3">Log Out</a>
                        </li>    
        </ul>
      </div>  
    </div>
  </nav>
1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 09:22:25

header.php文件中包含index.php的主体。因为在generateTicket.php文件中包含了header.php,所以可以在ajax请求中获得index.php的主体。您可以想象,include表达式或多或少只是将其自身替换为所包含文件的内容。

您必须将header.php中的HTML代码移动到其他文件中,或者不要将header.php文件包含在generateTicket.php中。

但是,如果这两个选项都不适合您,则有一种解决方法。您可以缓冲来自header.php的输出,然后直接删除它。

代码语言:javascript
复制
ob_start();
include('includes/header.php');
ob_end_clean();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66467026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档