我在我的HTML表单中使用以下代码-尝试制作一种"彩票刮刮票"类型的效果。有一个网格,每件物品都有一个来自数据库的动态数字。单击正方形调用clickme()函数,调用db,然后更改图像。我只是在第一部分,试图让数据库更新。
我的PHP/HTML:
if ($unlock == 0) {
echo '<div> class="' . $currentgrid .'" name="' . $slot . '"
onclick="clickme();" style="cursor: pointer;">';
} else { echo '<div>'; }
和我的javascript.js文件:
function clickme()
{
// $(function() {
// $(".gridsquare").click(function() {
var slotnumber = $(this).attr('name');
// var gridnumber = $(this).attr('class');
var dataString = 'slot='+ slotnumber;
// + '&gridnumber=' + gridnumber;
$.ajax({
type: "POST",
url: "post/supergridupdate.php",
data: dataString,
success: function(){
// $('.success').fadeIn(200).show();
// $('.error').fadeout(400).hide;
}
});
return false;
// });
// });
}
supergridupdate.php:
<?php
$slot = $_POST['slot'];
// $gridnumber = $_POST['gridnumber'];
$gridnumber = 1;
$sql = "INSERT INTO test (slot, gridnumber) VALUES ('$slot', '$gridnumber')";
$result = mysql_query($sql) or die(mysql_error());
?>
现在它都显示了,我可以点击div但是数据库没有更新。
更新:得到它的工作与帮助,只是简单地传递变量在javascript函数现在,而不是使用jquery。
您确定'slotnumber'有值吗?你也试过发送一个对象而不是字符串吗?var dataString = {'slot': slotnumber};
——编辑在函数中尝试将元素传递给函数onclick="clickme(this);"
function clickme(el)
{
// $(function() {
// $(".gridsquare").click(function() {
var slotnumber = $(el).attr('name');
// var gridnumber = $(this).attr('class');
您已经评论了// $gridnumber = $_POST['gridnumber'];
添加
success: function(data){
alert(data);
}
你可以执行echo $result或Exception,看看它是否抛出任何错误吗?同样执行echo $sql,这将提醒查询。这样你就可以知道到底发生了什么。
还可以将查询执行包装在try catch中以确保安全
try{
$result = mysql_query($sql) or die(mysql_error());
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "'n";
}
就像这样,您是否连接到文件"supergridupdate.php"上的数据库?
我希望在db
更新之前,您已经正确建立了连接
在你的supergridupdate。php中你做的是
$slot = $_POST['slot'];
所以在ajax请求中你需要输入
data:{slot:dataString},
HTH
您确定生成的html是正确的还是只是一个错别字?在属性之前关闭div标记。试试这个
echo '<div class="' . $currentgrid .'" name="' . $slot . '" onclick="clickme();" style="cursor: pointer;">';