我在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。
答案 0 :(得分:1)
您评论了// $gridnumber = $_POST['gridnumber'];
并且您在查询中使用它,不确定是否会导致错误。
添加此
success: function(data){
alert(data);
}
你能回复$ result或Exception,看看它是否会抛出任何错误?也可以使用echo $ sql来提醒查询。这样你就可以看到究竟发生了什么。
还将try catch中的查询执行包装为安全
try{
$result = mysql_query($sql) or die(mysql_error());
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
答案 1 :(得分:1)
你确定'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');
答案 2 :(得分:0)
就像那样,您是否已连接到该文件“supergridupdate.php”上的数据库?
答案 3 :(得分:0)
我希望在您已正确建立连接的db
中进行更新之前
$slot = $_POST['slot'];
所以在你的ajax请求中你需要做
data:{slot:dataString},
HTH
答案 4 :(得分:0)
你确定你正确地生成了html,还是只是一个错字。您正在关闭属性前的div标记。试试这个
echo '<div class="' . $currentgrid .'" name="' . $slot . '" onclick="clickme();" style="cursor: pointer;">';