我的代码如下:
<?php
$stmt = $pdo_conn->prepare("SELECT * from controldata where field = :field ");
$stmt->execute(array(':field' => 'notice_board'));
$result = $stmt->fetch();
?>
<textarea id="notice_board_textarea" data-id="notice_board" rows="8"><?php echo stripslashes(strip_tags($result["value"])); ?></textarea>
<script type="text/javascript">
$('#notice_board_textarea').on('blur', function () { // don't forget # to select by id
var id = $(this).data('id'); // Get the id-data-attribute
var val = $(this).val();
$.ajax({
type: "POST",
url: "dashboard.php?update_notice_board=yes",
data: {
notes: val, // value of the textarea we are hooking the blur-event to
itemId: id // Id of the item stored on the data-id
},
});
});
</script>
从MySQL数据库中选择数据并在textarea中显示
然后JS代码通过将数据发布到另一个页面来更新它,但不刷新页面或单击保存/提交按钮
在dashboard.php上的我有这个代码:
if($_GET["update_notice_board"] == 'yes')
{
$stmt = $pdo_conn->prepare("UPDATE controldata SET value = :value WHERE field = :field ");
$stmt->execute(array(':value' => $_POST["notes"], ':field' => 'notice_board'));
}
但它没有更新数据
我做错了什么?答案 0 :(得分:0)
更新回答:
根据以下评论中的内容,我的猜测是,这是一个服务器方面的问题,超出了这里分享的内容。也许dashboard.php是清空超级全局的框架的一部分,或者请求可能不会直接发送到dashboard.php
旧建议:
当你使用(U:实际上你可能会在type: "POST"
时,你不会在$_GET
变量中找到参数。$_GET
找到它,但在我认为将所有变量放在$_GET
或$_POST
中更为清晰,尽管可能存在偏好分裂的语义参数。
将您的参数添加到ajax调用的data
对象中,然后从$_POST
变量中读取它:
$.ajax({
type: "POST",
url: "dashboard.php",
data: {
notes: val, // value of the textarea we are hooking the blur-event to
itemId: id, // Id of the item stored on the data-id
update_notice_board:"yes"
},
success: function(reply) {
alert(reply);
},
error:function(jqXHR, textStatus, errorThrown ) {
alert(textStatus);
}
});
和
if($_POST["update_notice_board"] == 'yes')
(如果您不关心请求是获取还是发布,您也可以查看$_REQUEST
。)
比较文档条目:
http://www.php.net/manual/en/reserved.variables.get.php
http://www.php.net/manual/en/reserved.variables.post.php
http://www.php.net/manual/en/reserved.variables.request.php
工作客户端示例: http://jsfiddle.net/kLUyx/
答案 1 :(得分:0)
错:
if ($_POST["update_notice_board"] == 'yes') {
右:
if ($_GET['update_notice_board'] == 'yes') {
当您直接向网址添加内容时,它始终是GET:
url: "dashboard.php?update_notice_board=yes",