2016-08-03 6 views
-1

Es wurde versucht, einen Attributwert über eine jQuery-Post-Methode an PHP zu übergeben. Es ist gemäß dem console.log erfolgreich, aber die Seite aktualisiert den $ _POST-Wert auf der Seite nicht. Es zeigt sich jedoch in den Daten zum Erfolg.Die Ajax-Post-Methode aktualisiert die Seite nicht

jQuery post-Daten:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Dracanon Application</title> 
    <script src="js/jquery-2.2.4.min.js"></script> 
    <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css"/> 
    <link href="css/bootstrap-theme.min.css" rel="stylesheet" type="text/css"/> 
    <link rel="stylesheet" href="css/jquery-ui.css" type="text/css"> 
</head> 
<body>Array 
(
    [id] => 22 
) 
data from ajax post:22<br/><form name="test" method="post" action=""> 
<div class="bs-example"> 
    <ul class="nav nav-tabs"> 
     <li class="active"><a data-toggle="tab" href="#newaltrequest">New Requests</a></li> 
     <li><a data-toggle="tab" href="#archive">Archive</a></li> 
    </ul> 
    <div class="tab-content"> 
     <div id="newaltrequest" class="tab-pane fade in active"> 
      <h3>New Requests</h3> 
      <table class="table table-striped" id="application-table"> 
       <div class="display-limit"> 
        <div class="btn-group page-limit"> 
         <button id="pagelimit" type="button" class="form-control btn btn-default btn-small dropdown-toggle" data-toggle="dropdown"> 
           <span>10</span><span class="caret"></span> 
         </button> 
         <input type="hidden" id="limit-selection" name="limit-selection" /> 
         <ul class="dropdown-menu limit-selector" role="menu" > 
          <li><a href="#" data-value="5">5</a></li> 
          <li><a href="#" data-value="10">10</a></li> 
          <li><a href="#" data-value="25">25</a></li> 
          <li><a href="#" data-value="50">50</a></li> 
          <li><a href="#" data-value="All">All</a></li> 
         </ul> 
         <script> 
          $('.limit-selector li a').click(function (e) { 
           var value = $(this).data("value"); 
           $('#limit-selection').val(value); 
           document.getElementById("classForm").submit(); 
          }); 
         </script> 
        </div> 
       </div> 
       <div class="button-container"> 
        <script> 
         /* limit page dropdown */ 
         $('.dropdown-menu a').on('click', function(){ 
          $('.dropdown-toggle').html('<span>'+$(this).html() + '</span><span class="caret"></span>'); 
         }); 
         /* End limit page dropdown */ 
        </script> 
       </div>     
       <thead> 
        <tr> 
         <th>Username</th> 
         <th>Alt Character</th> 
        </tr> 
       </thead> 
       <tbody> 
       <tr> 
        <tr> 
         <td>bwilson</td><td>Bracchius</td><td class='btnreview'><button type='button' class='btn btn-primary btn-small reviewbutton' data-toggle='modal' 
          data-target='#view_detail_modal' 
          data-requestid='22'>Review</button></td></tr><tr><td>dcaldessa</td><td>sojurne</td><td class='btnreview'><button type='button' class='btn btn-primary btn-small reviewbutton' data-toggle='modal' 
          data-target='#view_detail_modal' 
          data-requestid='23'>Review</button></td> 
        </tr> 
       <!--<script> 
         $(document).ready(function() { 
          $(document).on('click','.reviewbutton',function() { 
           var requestid = $(this).attr('data-requestid'); 
           console.log(window.location); 
           $.ajax({ 
              type:"POST", 
              url: "../index.php", 
              data: {id: 13}, 
              success: function (data) { 
            console.log("data-resolved"); 
           } 
             }); 
            }); 
         }); 
        </script>-->    </tr> 
       </tbody> 
      </table> 
     </div> 
     <div id="archive" class="tab-pane fade"> 
      <h3>Archive</h3> 
      <table class="table table-striped" id="archive-table"> 
       <div class="display-limit"> 
        <div class="btn-group page-limit"> 
         <button id="pagelimit" type="button" class="form-control btn btn-default btn-small dropdown-toggle" data-toggle="dropdown"> 
          <span>10</span><span class="caret"></span> 
         </button> 
         <input type="hidden" id="limit-selection" name="limit-selection" /> 
         <ul class="dropdown-menu limit-selector" role="menu" > 
          <li><a href="#" data-value="5">5</a></li> 
          <li><a href="#" data-value="10">10</a></li> 
          <li><a href="#" data-value="25">25</a></li> 
          <li><a href="#" data-value="50">50</a></li> 
          <li><a href="#" data-value="All">All</a></li> 
         </ul> 
         <script> 
          $('.limit-selector li a').click(function (e) { 
           var value = $(this).data("value"); 
           $('#limit-selection').val(value); 
           document.getElementById("classForm").submit(); 
          }); 
         </script> 
        </div> 
       </div> 
       <div class="button-container"> 

        <script> 
         /* limit page dropdown */ 
         $('.dropdown-menu a').on('click', function(){ 
          $('.dropdown-toggle').html('<span>'+$(this).html() + '</span><span class="caret"></span>'); 
         }); 
         /* End limit page dropdown */ 
        </script> 
       </div>     
       <thead> 
       <tr> 
        <th>Username</th> 
        <th>Alt Character</th> 
       </tr> 
       <tbody> 

       <tr> 
        <td>Sample Data</td> 
        <td>Sample Data</td> 
       </tr> 
       </tbody> 
       </thead> 
      </table> 
     </div> 
    </div> 

    <script> 
     $(document).on('click','.reviewbutton',function() { 
      var requestid = $(this).attr('data-requestid'); 
      var value = {id: requestid}; 
      console.log(window.location); 
      $.post("testing.php",value, function (data) { 
       console.log(data); 
      }); 
     }); 
    </script> 
</body> 
</html> 

so zeigt es, dass die Daten zurückgegeben werden, aber es ist erfrischend, nicht den $ _POST Array die Werte auf dem Bildschirm angezeigt werden soll.

Unten ist die ursprüngliche Form:

<?php 
include "includes/header.php"; 
include "includes/functions.php"; 
print_r($_POST); 

if (isset($_POST['id'])){ 
    print_r("data from ajax post:".$_POST['id']."<br/>"); 
}else if (isset($_POST['id'])){ 
    echo "data not found"; 
} 
if (!isset($_SESSION['requestlimit'])) { 
    $_SESSION['requestlimit'] = 10; 
}else if (isset($_POST['limit-selection'])){ 
    if($_POST['limit-selection'] != null) { 
     $_SESSION['requestlimit'] = $_POST['limit-selection']; 
    } 
} 

if (!isset($_SESSION['archivelimit'])) { 
    $_SESSION['archivelimit'] = 10; 
}else if (isset($_POST['limit-selection'])){ 
    if($_POST['limit-selection'] != null) { 
     $_SESSION['archivelimit'] = $_POST['limit-selection']; 
    } 
} 

$start=0; 
$limit=$_SESSION['archivelimit']; 

if(isset($_GET['pid'])) 
{ 
    $id = $_GET['pid']; 
    $start = ($id-1)*$limit; 
} 
else 
{ 
    $id=1; 
} 

?> 
<form name="test" method="post" action=""> 
<div class="bs-example"> 
    <ul class="nav nav-tabs"> 
     <li class="active"><a data-toggle="tab" href="#newaltrequest">New Requests</a></li> 
     <li><a data-toggle="tab" href="#archive">Archive</a></li> 
    </ul> 
    <div class="tab-content"> 
     <div id="newaltrequest" class="tab-pane fade in active"> 
      <h3>New Requests</h3> 
      <table class="table table-striped" id="application-table"> 
       <?php include "includes/pagelimit_button.php"?> 
       <thead> 
       <tr> 
        <th>Username</th> 
        <th>Alt Character</th> 
       </tr> 
       <tbody> 
       <tr> 
        <?php include "includes/alt_requestlist.php"?> 
       </tr> 
       </tbody> 
       </thead> 
       <?php /*include "includes/view_alt_request.php" */?> 
      </table> 
     </div> 
     <div id="archive" class="tab-pane fade"> 
      <h3>Archive</h3> 
      <table class="table table-striped" id="archive-table"> 
       <?php include "includes/pagelimit_button.php"?> 
       <thead> 
        <tr> 
         <th>Username</th> 
         <th>Alt Character</th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr> 
         <td>Sample Data</td> 
         <td>Sample Data</td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 
    </div> 
</form> 
    <script> 
     $(document).on('click','.reviewbutton',function() { 
      var requestid = $(this).attr('data-requestid'); 
      var value = {id: requestid}; 
      console.log(window.location); 
      $.post("testing.php",value, function (data) { 
       console.log(data); 

      }); 
     }); 

    </script> 
</body> 
</html> 

Kann ich einige Vorschläge oder Hilfe in der richtigen Richtung zu bekommen, dieses Problem zu lösen?

+0

Haben Sie die AJAX-Anfrage/-Antwort in den Entwicklertools des Browsers gesehen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? –

+1

Die AJAX-Antwort aktualisiert * das '$ _POST'-Array * nicht. Sie müssen die Werte aus der AJAX-Antwort übernehmen und JS/jQuery verwenden, um die Felder zu aktualisieren. –

+0

'print_r (" Daten von Ajax nach: ". $ _ POST ['id']."
");' PRINT_R() druckt Arrays und nicht skalare Strings, erhalten Sie einen Absturz oder zumindest eine Fehlermeldung im Fehlerprotokoll , benutze echo – RiggsFolly

Antwort

-1

Die Variable $ _POST wird auf der Serverseite ausgewertet, wenn Sie die Seite anfordern. Wenn Sie die AJAX-Anfrage ausführen, wird die Variable $ _POST auf einer separaten Seite ausgewertet. Die zurückgegebenen Werte werden auf der Seite des Browsers in der Erfolgsmethode ausgewertet. Die $ _POST-Variable wird daher nicht aktualisiert, aber Sie sollten javascript oder jQuery verwenden, um den zurückgegebenen Wert zu verarbeiten und sie in Ihrer Seite an den Stellen zu platzieren, an denen sich die Werte der Variablen $ _POST befinden.

Verwandte Themen