将变量从Php返回到JQuery Ajax

时间:2013-04-03 21:59:54

标签: php jquery ajax

我正在尝试做什么
我想将用户的名字和分数发送到我的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();

3 个答案:

答案 0 :(得分:1)

您的$.ajax方法需要json响应。您正在返回text/plain。将最后一行php改为:

echo json_encode($leaderboard);

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

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

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

更新

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

执行此操作的最简单方法是删除dataType: "html"电话中的$.ajax部分。 (不要做上面更新标题的任何内容,我假设你在那里返回一个数组。)

答案 1 :(得分:0)

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

dataType: "json"

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

答案 2 :(得分:0)

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

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

任何人都可以详细说明这个吗?