0

我想要做什么
我想将用户名和分数发送到我的 php 页面,在那里它将数据插入数据库,然后吐出一个显示前十名分数的 html 字符串。

实际发生
了什么我输入用户名和分数,然后单击提交。数据被发送到php,然后将其存储在数据库中。然后,php 文件正确地构造了字符串,我可以通过直接访问 php 页面看到。但是,字符串不会返回到我的 JQuery。

$("#leaderboardForm > input[type=image]").click(function() {
    var theName = $("input#leaderboardName").val();
    var theScore = $("input#theScore").val();
    $.ajax({
      type: "POST",
      url: "../admin/submitleaderboard.php",
      data: { leaderboardName: theName, theScore: theScore },
      dataType: "html",
      success: function(leaderboard) {
        $("div#deadStats").html(leaderboard);
      },
      error: function() {
          alert("An error occured submitting your score.");
      }
    });
});


    $name = $_POST['leaderboardName'];
$score = $_POST['theScore'];

$sql="INSERT INTO leaderboard (leaderboard_date,leaderboard_name,leaderboard_score) VALUES (CURDATE(),'$name','$score')";
$result = mysql_query($sql);

$sql="SELECT * FROM leaderboard";
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)) {
    $leaderboard = $leaderboard . "<div style='width: 433px; padding: 8px; overflow: hidden; border: 1px solid #300; margin-bottom: 5px;'>";
    $leaderboard = $leaderboard . "<div style='width: 200px; height: 30px; float: left;'>";
    $leaderboard = $leaderboard . "<span style='color: #EFEFEF; font-weight: bold; font-size: 20px;'>" . $row['leaderboard_name'] . "</span></div>";
    $leaderboard = $leaderboard . "<div style='width: 200px; height: 30px; float: left;'>";
    $leaderboard = $leaderboard . "<span style='color: #A00; font-weight: bold; font-size: 20px;'>" . $row['leaderboard_score'] . "</span></div>";
    $leaderboard = $leaderboard . "</div>";
}
echo $leaderboard;
mysql_close();
4

3 回答 3

1

您的$.ajax方法需要json响应。你回来了text/plain。将最后一个 php 行更改为:

echo json_encode($leaderboard);

它会像那样工作,但要真正正确,您可能应该添加:

header('Content-Type: application/json');

在输出任何内容之前到您的 PHP 页面顶部。

更新

我看到您正在阅读数据库行并在 php 中回显它。然后你想把它附加到你的页面上。

简单的方法是删除通话中dataType: "html"的一部分。$.ajax(不要做上述更新标题的任何事情,我假设你在那里返回一个数组)。

于 2013-04-03T22:01:29.180 回答
0

我想我可能已经找到了解决方案。

出于某种原因,如果我使用输入>图像或输入>提交作为我的 Ajax 的触发器,我会收到错误消息。如果我使用 div/span/textfield 或任何其他通常不提交表单的元素,它就可以正常工作。

有人可以详细说明吗?

于 2013-04-04T01:44:52.857 回答
0

您说您期望 html 作为答案,但您将 ajax 请求的数据类型声明为 json:

dataType: "json"

尝试删除它,或将其设置为 html。

于 2013-04-03T22:02:19.500 回答