$ .post verbucht keine Daten [php]
$.post
und $.get
sind nur $.get
der strukturierteren $.ajax()
, also bevorzuge ich letztere. Die zusätzliche Struktur hält mich aufrecht.
Da Sie jQuery sowieso verwenden, würde ich Ihren Code wie folgt neu strukturieren:
$('#q1').click(function() {
var test = "Hello there";
$.ajax(function() {
type: "POST",
url: 'ajax.php',
data: 'ans=' +test+ '&anothervarname=' + anothervarvalue,
success: function(recd_data) {
alert('Rec'd from PHP: ' + recd_data );
}
});
});
Beachten Sie, dass die Zeile data:
nur für Beispielzwecke verwendet wird und nicht mit Ihrem Code übereinstimmt. Sie zeigen Ihnen nur, wie Sie Variablen an die PHP-Seite übergeben.
Natürlich schließt das oben genannte Entfernen des Inline-Javascript - nie eine gute Idee - von Ihrem Anchor-Tag-HTML ein, also:
<a href="#" id="q1" >click</a>
Auch auf der PHP-Seite können Sie überprüfen, ob die Dinge funktionieren, indem Sie oben einen Test hinzufügen. Abgleich mit den data:
Zeile im Beispiel AJAX-Code würde es so aussehen:
ajax.php
<?php
$a = $_POST['ans'];
$b = $_POST['anothervarname'];
$response = '<h1>Received at PHP side:</h1>';
$response .= 'Variable [ans] has value: ' . $a . '<br>';
$response .= 'Variable [anothervarname] has value: ' . $b . '<br>';
echo $response;
Wichtig: Beachten Sie die Verwendung von echo
, nicht return
, um Werte an das AJAX-Skript zu senden.
Beachten Sie auch, dass Sie sich mit den Dingen beschäftigen müssen , die von PHP im AJAX- success:
Funktion NUR . Wenn Sie auf diese Daten außerhalb der Funktion success:
zugreifen müssen, können Sie die Daten in ein verstecktes Element <input type="hidden" id="myHiddenInput">
wie <input type="hidden" id="myHiddenInput">
:
success: function(recd_data) {
$('#myHiddenInput').html(recd_data);
}
Hier sind einige zusätzliche Beispiele für einfache AJAX-Konstruktionen:
Füllen Sie Dropdown 2 basierend auf Auswahl in Dropdown 1 auf
Hallo, das ist mein Code für page.php
<?php session_start(); ?>
<script type="text/javascript" src="js/jquery-1.8.2.js"></script>
<script type="text/javascript" src="js/jquery.colorbox.js"></script>
<script type="text/javascript" src="js/new-landing.js"></script>
<script>
var ans1 = "home";
function aa(){
$.post("ajax.php", { "ans": "test" },
function(data){
alert("Posted");
}, "html");
};
</script>
<a href="#" id="q1" onClick="javascript:aa();" >click</a>
und hier möchte ich sehen, ob meine Daten gepostet werden.
<?php
session_start();
$te = $_POST['ans'];
$_SESSION['demo'] = $te;
echo "<pre>".print_r($_SESSION,'/n')."</pre>";
?>
wenn ich auf das Anker-Tag klicke. Die Alarmbox wird angezeigt. aber wenn ich die ajax.php Seite aktualisiere. Es zeigt einen Fehler. Hinweis: Undefinierter Index: ans in
C:\xampp\htdocs\healthqueens\hello\ajax.php on line 3
und der Ausdruck der Sitzung ist ebenfalls leer. Array ( [demo] => )
Bitte, wenn mir jemand den Fehler zeigen kann.