我正在尝试做什么
我想将用户的名字和分数发送到我的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();
答案 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或任何其他通常不提交表单的元素,它就可以正常工作。
任何人都可以详细说明这个吗?