我在jquery库中使用ajax函数时遇到了很大的麻烦。我是jQuery,ajax和php的完全初学者,但我正在研究这个学校项目,这应该是一个游戏(有点),页面创建一个10x10的表格,用数字填充它并自动选择一个单元格,然后用户可以猜测它是哪个单元格。
在桌子下面,有一个文本区域,我应该在其中输出游戏的进度;例如,"猜错了!猜测次数:1;到正确单元格的距离:3"等...
问题出在执行上;我有两个.php文件,一个是玩游戏的主站点,另一个是统计部分(只是数学之类的)。
事不宜迟,这是我的代码:
在其中玩游戏的主.php文件的代码:
<script>
$(document).ready(function()
{
$("#tablezz td").click(function()
{
var column_num = parseInt( $(this).index() );
var row_num = parseInt( $(this).parent().index() );
var dat = { column: column_num, row: row_num };
$.ajax({
type: "GET",
data: dat,
url: "preveri.php",//this is the name of the mathemathical .php file
success: function(data){
$("#imamonkey").prepend(data);
}
})
});
});
</script>
</head>
<body>
<?php
echo "<table id='tablezz' border='1'>";
$counter=1;
for($i=0; $i<10; $i++){
echo"<tr>";
for($j=0; $j<10; $j++){
echo "<td> $counter </td>" ;
$counter=$counter+1;
}
}
echo"</tr>";
echo "</table>";
session_start();
$_SESSION["rightx"] = rand(1,10);
$_SESSION["righty"] = rand(1,10);
echo"<br>
<br>
<textarea id='imamonkey' rows='30' cols='46'></textarea>";
?>
</body>
以及另一个数学.php文件的代码;
<?php
$distance=sqrt((($_GET["column"] - $_SESSION["rightx"]) * ($_GET["column"] - $_SESSION["rightx"])) + (($_GET["row"] - $_SESSION["righty"]) * ($_GET["row"] - $_SESSION["righty"])));
if(isset($_SESSION["tries"])) {
$_SESSION["tries"]=$_SESSION["tries"]+1;
}
else {
$_SESSION["tries"]=1;
}
if($_SESSION["rightx"]==$_GET["column"] && $_SESSION["righty"]==$_GET["row"]) {
echo "Gooes guess. This took you $_SESSION['tries'] tries."
}
else {
echo "Bad call! The distance to the right cell is: $distance . So far you've tried $_SESSION['tries'] times.";
}
?>
唯一的问题是,我的ajax函数显然无法正常工作。当我单击<td>
单元格进行测试时,它会在文本区域中插入空白内容。我一定对数据和数据做错了什么,但我完全不知道它会是什么。例如,如何让它插入来自其他.php文件的回声?
非常感谢任何帮助,因为我完全不知道我做错了什么。提前感谢,BG
在 AJAX 调用中,您尝试将数据附加到文本区域:
$("#imamonkey").prepend(data);
这意味着数据放置在 DOM 中的文本区域之前(如果您在浏览器控制台中查看更新的信息,您实际上可以看到数据)。您要做的是将数据放在文本区域中:
$("#imamonkey").val(data);
在 PHP 文件中,您需要将session_start();
添加到文件开头以及您希望在其中使用会话数据的任何文件(例如 HTML 文件)。
您的代码中有以下错误:
- 会话必须从头开始。
- 修复了语法错误。
- 此外,会话必须在第二页开始。
尝试以下脚本:
<?php
session_start();
?>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function()
{
$("#tablezz td").click(function()
{
var column_num = parseInt( $(this).index() );
var row_num = parseInt( $(this).parent().index() );
var dat = { column: column_num, row: row_num };
$.ajax({
type: "GET",
data: dat,
url: "preveri.php",//this is the name of the mathemathical .php file
success: function(data){
$("#imamonkey").prepend(data);
}
})
});
});
</script>
</head>
<body>
<?php
echo "<table id='tablezz' border='1'>";
$counter=1;
for($i=0; $i<10; $i++){
echo"<tr>";
for($j=0; $j<10; $j++){
echo "<td> $counter </td>" ;
$counter=$counter+1;
}
}
echo"</tr>";
echo "</table>";
$_SESSION["rightx"] = rand(1,10);
$_SESSION["righty"] = rand(1,10);
echo"<br>
<br>
<textarea id='imamonkey' rows='30' cols='46'></textarea>";
?>
</body>
</html>
第二页:
<?php
session_start();
$distance=sqrt((($_GET["column"] - $_SESSION["rightx"]) * ($_GET["column"] - $_SESSION["rightx"])) + (($_GET["row"] - $_SESSION["righty"]) * ($_GET["row"] - $_SESSION["righty"])));
if(isset($_SESSION["tries"])) {
$_SESSION["tries"]=$_SESSION["tries"]+1;
}
else {
$_SESSION["tries"]=1;
}
if($_SESSION["rightx"]==$_GET["column"] && $_SESSION["righty"]==$_GET["row"]) {
echo "Gooes guess. This took you ".$_SESSION['tries']." tries." ;
}
else {
echo "Bad call! The distance to the right cell is: ".$distance." . So far you've tried ".$_SESSION['tries']." times.";
}
?>