【问题标题】:updating mysql table on textarea blur?更新textarea模糊上的mysql表?
【发布时间】:2012-10-30 14:30:48
【问题描述】:

当用户单击文本区域时,我正在尝试使文本区域更新 mysql 中表中的信息。有人可以指导我正确的方向吗?这就是我到目前为止所拥有的。我没有收到任何错误,但是当我更新它时,更改不会保存。

HTML 代码

    <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">

<textarea id="title" textarea name="title" rows="10" style="width: 456px; 
    margin-top:3px;
    text-align:left;
    margin-left:-2px;
    height: 120px;
    resize: none; 
    border: hidden;" data-id='$idbio'><?php echo $profile['bio'] ?> </textarea>
</form>

Javascript 代码

<script type="text/javascript">

$('textarea').on('blur',function () {
    var titleVal = $(this).val(), id = $(this).data('id');        

    $.ajax({
         type: "POST",
         url: "changebio.php",
         data: {title:titleVal , id:id},
         success: function(msg) {
             $('#'+id).html(msg);
         }
   })
});

</script>

changebio.php

 <?php
require_once("session.php"); 
require_once("functions.php");
require('_config/connection.php');
update_profilebio ();
header('Location: http://www.something.com/confirm.php');
?>

函数.php

 function update_profilebio() {
            global $connection;
            global $profile_id;
            $query = "UPDATE ptb_profiles
                      SET bio='value'
                        WHERE ptb_profiles.user_id = \"$profile_id\"
                        AND ptb_profiles.user_id = ptb_users.id";
            $update_profilebio_set = mysql_query($query, $connection);
            confirm_query($update_profilebio_set);
            return $update_profilebio_set;

            }

【问题讨论】:

  • 您遇到了什么错误?有什么问题?
  • 首先不应该是:$('#title').on('blur',function () {
  • 我可能会尝试。但是如果我正确地编写了函数,任何人都可以告诉我。即我希望它更新 ptb_profiels 中的表 collum 'bio'。不知道是不是这个问题。
  • @Brian 我认为如果他需要多个文本区域都使用相同的事件,那么该选择器应该可以工作。这不会:$('#'+id).html(msg); 因为 id 不是选择器,而是 data-id 值的值。
  • 那么到底有什么错误呢? data-id='$idbio' 中的 $idbio 是什么,它才能工作,它需要是值 'title'。

标签: php sql text area


【解决方案1】:

有很多可能的原因导致这不起作用。其中许多可以通过控制台在一个不错的浏览器中快速检查。

我可以看到 可能 导致问题的是 AJAX 调用之后的成功(这意味着 AJAX 调用需要成功)。您尝试将返回的 HTML 值重新分配为 $('#'+id).html(msg);,其中 id 在这种情况下实际上不是选择器:id = $(this).data('id') 它是数据 ID。

我个人会将$idbio 附加到 id 属性的末尾,如下所示:

  <textarea id="title-<?php echo $idbio;?>" textarea name="title" data-id="<?php echo $idbio;?>">
    <?php echo $profile['bio'] ?>
  </textarea>

  <script type="text/javascript">

    $('textarea').on('blur',function () {
        var titleVal = $(this).val(), 
            id = $(this).data('id');        

        $.ajax({
             type: "POST",
             url: "changebio.php",
             data: {title:titleVal , id:id},
             success: function(msg) {
                 $('#title-' + id).val(msg);
             }
       })
    });

  </script>

【讨论】:

    【解决方案2】:

    你为什么使用“on”方法?你可以这样做:“$('textarea').blur(function(){...});”,我不知道你在这里使用的“数据”方法是什么:“$(this ).data('id')",当我想在我的节点中获取一个 id 时,我只是这样:"$(this).attr('id');",还有一件事,你从 textarea 获取字符串第一次使用“val()”方法,然后尝试用“html()”输入一个字符串,这有问题。

    【讨论】:

    • .blur 在内部变成 'on.('blur',...' 所以它是等价的。
    • 零差异。如果将来他想允许其他事件触发它,它实际上提供了灵活性。
    猜你喜欢
    • 2016-12-03
    • 2010-10-29
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多