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?
Haben Sie die AJAX-Anfrage/-Antwort in den Entwicklertools des Browsers gesehen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? –
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. –
'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