Ich versuche, ein Programm, das 5 Wörter aus einer Datenbank zufällig nimmt und fügt sie in ein Array. Die Seite lädt anfangs wie gewünscht, aber nach dem Klicken auf die Schaltfläche passiert nichts. Keiner der Alarme wird jemals ausgelöst, daher darf die Funktion niemals eingegeben werden, aber warum ist es jenseits von mir. Außerdem bekomme ich einen Fehler, der besagt, dass name kein legitimer Index ist (Referenzzeile 13), wenn ich das erste Mal versuche, ihn in einem Browser auszuführen, also wäre der Rat auch großartig.Ein Klick auf die Schaltfläche tut nichts
lingo.php:
<?php
session_start();
if (empty($_POST["name"])):
$_SESSION["error"] = "You did not enter a name.";
header("Location: entername.php");
else:
$name = $_POST["name"];
setcookie("name", "$name", time()+3600);
endif;
?>
<html>
<head>
<b>Welcome to Lingo, <?php echo $_COOKIE["name"]; ?></b><br />
<script src = "http://code.jquery.com/jquery-latest.js"></script>
<script type = "text/javascript" language = "javascript">
var arr = [];
function collectWords() {
$.post("getWord.php",
function(data) {
arr[word1] = $(data).find("Word1").text();
alert("function reached");
alert(arr[word1]);
arr[word2] = $(data).find("Word2").text();
alert(arr[word2]);
arr[word3] = $(data).find("Word3").text();
alert(arr[word3]);
arr[word4] = $(data).find("Word4").text();
alert(arr[word4]);
arr[word5] = $(data).find("Word5").text();
alert(arr[word5]);
});
}
</script>
</head>
<body>
<table id = "theTable" border = "1" class = "thetable"> </table>
<input type = "submit" value = "Start" onclick = "collectWords()">
</body>
</html>
getWord.php
<?php
$db = new mysqli('localhost', 'spj916', "cs4501", 'spj916');
if ($db->connect_error):
die ("Could not connect to db " . $db->connect_error);
endif;
$query = "select word from Words order by rand() limit 1";
$result = $db->query($query);
$rows = $result->num_rows;
if ($rows >= 1):
header('Content-type: text/xml');
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<Word1>";
$row = $result->fetch_array();
$ans = $row["word"];
echo "<value>$ans</value>";
echo "</Word1>";
else:
die ("DB Error");
endif;
$query = "select word from Words order by rand() limit 1";
$result = $db->query($query);
$rows = $result->num_rows;
if ($rows >= 1):
header('Content-type: text/xml');
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<Word2>";
$row = $result->fetch_array();
$ans = $row["word"];
echo "<value>$ans</value>";
echo "</Word2>";
else:
die ("DB Error");
endif;
$query = "select word from Words order by rand() limit 1";
$result = $db->query($query);
$rows = $result->num_rows;
if ($rows >= 1):
header('Content-type: text/xml');
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<Word3>";
$row = $result->fetch_array();
$ans = $row["word"];
echo "<value>$ans</value>";
echo "</Word3>";
else:
die ("DB Error");
endif;
$query = "select word from Words order by rand() limit 1";
$result = $db->query($query);
$rows = $result->num_rows;
if ($rows >= 1):
header('Content-type: text/xml');
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<Word4>";
$row = $result->fetch_array();
$ans = $row["word"];
echo "<value>$ans</value>";
echo "</Word4>";
else:
die ("DB Error");
endif;
$query = "select word from Words order by rand() limit 1";
$result = $db->query($query);
$rows = $result->num_rows;
if ($rows >= 1):
header('Content-type: text/xml');
echo "<?xml version='1.0' encoding='utf-8'?>";
echo "<Word5>";
$row = $result->fetch_array();
$ans = $row["word"];
echo "<value>$ans</value>";
echo "</Word5>";
else:
die ("DB Error");
endif;
?>
Ihre Javascript ist korrekt. Bekommen Sie die Antwort vom Ajax und prüfen Sie, ob diese erfolgreich zurückgegeben wird. So: '$ .post (" getWord.php ", Funktion (Daten, Antwort) {console.log (Antwort)});'. Was ist der 'Daten'-Wert, den Sie posten? Ich sehe es nirgends definiert. – Roy
Ich dachte, das sei nur die richtige Syntax, ich habe es in jedem Beispiel gesehen, das mir gegeben wurde, und es hat für ein Programm funktioniert, das ich bereits zum Laufen gebracht habe, also habe ich es weiter gemacht. Außerdem habe ich diese Zeile zu meiner Funktion hinzugefügt, und in der Konsole wird nichts angezeigt. –
Es ist die richtige Syntax für eine Jquery Ajax. Die Funktion ist die Erfolgsfunktion und die (Daten) sind die Daten, die der Ajax-Aufruf zurückerhält. Sie können es nennen, was Sie wollen. Sie können es JSon oder Käse oder Daten nennen, spielt keine Rolle. – NoobishPro