我正在尝试从数据库中显示一个字段,其中数据库字段以文本框开头,如下所示:
307,o = o~正在进行〜(文本框)[批准按钮]
我希望能够更改文本框中的值来说lala,然后按批准按钮并使用数据库中的新值和 window.location.reload更新字段(); 它会在文本框中显示更新的字段值,因此它最终会如下所示:
307,o = o~正在进行〜(lala)[批准按钮]
这是来自views.php的代码:
echo "<br><b>request to join site: {$row9['count']}</b><br>";
while ($row99 = $prep99->fetch(PDO::FETCH_ASSOC)) {
echo "{$row99['starID']} , {$row99['starName']} = {$row99['twitter']}";
if ($row99['guest'] == 0) {
$guest = 'ongoing';
};
if ($row99['guest'] == 1) {
$guest = 'guest';
};
if ($row99['guest'] == 2) {
$guest = 'PLEASE SELECT ONE';
};
echo " ~ $guest ~ <br>";
echo "<input type='text' name='starurl' value='{$row99['starURL']}' id='starurl' style='width:100px; height:30px;'/>";
echo "<br><button onclick='save_a9({$row99['starID']})'>Approve</button><button onclick='save_d9({$row99['starID']})'>Disapprove</button><br>";
}
这是views.php顶部的函数:
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
function save_a9(id) {
$.post('response6.php', {starID:id, starURL: $('#starurl').val()}, function(result) {
alert(result);
window.location.reload();
});
}
</script>
这是response6.php:
<?php
include("db_conn.php");
$sql = "update stars set approved = 1, starURL = ? where starID = ?";
$qc = $pdo_conn->prepare($sql);
$qc->execute(array($_POST['starURL'], $_POST['starID']));
echo 'saved';
?>
状态更新:它几乎可以正常工作,只需将fireURug控制台上的starURL值空白{starID:id, starURL: $('#starurl').val()}
留在帖子下即可显示:starID=307&starURL=
答案 0 :(得分:1)
我不知道你的数据库的细节,但有些事情可能会出错。您在response6.php中的SQL有一个语法错误,应该如下所示:
$sql = "update stars set approved = 1, starURL = ? where starID = ?";
(即用逗号分隔而不是&符号)
此外,您没有在ajax post调用中传递starURL的值,因此在绑定它并执行UPDATE语句时它将为null。您是否要在ajax发布数据中包含starURL的值,例如
$.post('response6.php', {starID:id, starURL: 'whatever'}, ...
最后,对页面进行全面刷新可能有点过头了。您正在使用ajax发布轻量级请求,并且可以在响应回来时对您的页面进行部分更新。