我正在创建一个浏览器RPG游戏。我想允许用户通过更新mysql数据库来保存他们当前的统计数据,而无需重新加载页面......所以我认为jquery可以提供帮助。
用户不会添加自己的统计信息。统计数据是通过用户操作生成的,例如解决挑战。我希望用户能够随时将这些更新的统计信息保存到数据库中。
问题是:
在单击“保存”按钮之前,jQuery正在输出echo "saved..." . $stats . ", " . $stats2;
。
单击“保存”时,数据库字段未更新。
我想知道为什么这不起作用。当我点击保存时,统计信息字段不应该是0
,而应该是显示的统计信息 - 11
。还应更新数据库字段。
出于测试目的,我刚刚创建了js变量var stats
,当按下箭头键时会更新它。
我调用函数updateHUD()来执行更新HTML的$('#stats').html(stats);
。
function updateHUD() {
$('#stats').html(stats);
}
然后在按下箭头键后调用updateHUD。
HTML
<div class="span12">
<button onclick="saveData(stats)" name="input" value="">Save Data</button>
<br /><span id="output"></span><br />
<ul>
<li><b>Stats 1:</b> <span id="stats"></span> </li>
</ul>
</div>
的jQuery
//Pass saved data to store in DB
$(document).ready(function() {
saveData();
});
function saveData() {
$.get("php/CRUD.php", {"_input" : $('input[name=input]').val()},
function(returned_data) {
$("#output").html(returned_data);
}
);
}
PHP
<?php
//store all player data in array and save to/update db
include 'DbConnect.php';
session_start();
$stats = (isset($_GET['_input']) ? ($_GET['_input']) : 0);
$formvars = array();
array_push($formvars, $stats);
echo $stats;
echo $_SESSION['username'];
$qry = 'UPDATE users SET stats="'.$stats.'" WHERE username="' . $_SESSION['username'] . '"';
$mysqli->query($qry) or die(mysqli_error($mysqli));
echo "saved..." . $stats;
mysqli_close($mysqli);
?>
输出
saved...0 //this should be 11
Stats 1: 11
答案 0 :(得分:4)
你做了
$('input[name=input]').val()
但您已将提交按钮命名为“input”,而不是添加具有此名称的输入框。
但问题仍然不清楚。
您是否希望授予用户使用其所需值更新其统计信息的权限?您应该更新问题以使其更清晰,因为它目前没有多大意义。
答案 1 :(得分:0)
您也可以尝试使用load
:
//Pass saved data to store in DB
$(document).ready(function() {
saveData();
});
$.fn.saveData=function(){
$('#divforload').css('display','none');
$('#divforload').load("php/CRUD.php?stats="+$('#stats').val(),function(){$('#divforload').fadeIn();});
}
//Just call the function onClick...
//Need an input called 'stats'
});
答案 2 :(得分:0)
首先,您从中获取数据的选择器不正确。您需要更改HTML ...
<button name="input"></button>
到......
<input type="button" name="input" />
或更改您的jQuery选择器...
$('input[name=input]')
选择正确的元素
$('button[name=input]')
其次,您需要确保在调用ajax函数时,按钮的'value =“”'实际上包含数据。
<button onclick="saveData(stats)" name="input" value="[Data Value Goes Here]">Save Data</button>
最后,在单击“保存”按钮之前输出jQuery的原因是因为您在文档加载后立即执行该功能。
$(document).ready(function() {
saveData();
});
尝试更类似的内容:
<强> HTML 强>
<button name="input" value="[data goes here]">Save Data</button>
JavaScript / jQuery
//Pass saved data to store in DB
$('button[name=input]').on('click', saveData);
function saveData() {
$.get("php/CRUD.php", {"_input" : $(this).val()},
function(returned_data) {
$("#output").html(returned_data);
}
);
}