【问题标题】:jquery post function work with text input but not hidden inputjquery post 函数可用于文本输入,但不能用于隐藏输入
【发布时间】:2018-06-15 20:23:47
【问题描述】:

我制作了一个带有 2 个输入的表单,一个是文本,另一个是隐藏的,用于存储我的变量值。然后我用 post 方法编写了一个 jquery 脚本,将值传递给另一个 php 文件,该文件将值插入数据库,但只插入来自文本输入的值,来自隐藏输入的值不起作用。 以下是表单和 jquery 脚本:

<?php
include_once('header.php');
$uid = $_GET['uid'];
echo $uid;
[enter image description here][1]?>
 <form>
        <input name="usermsg" type="text" id="usermsg" size="63" />
        <input type="hidden" name="uid" value="<?php echo $uid; ?>">
        <input name="submitmsg" type="submit"  id="submitmsg" value="Send" />
    </form>
 $(document).ready(function () {
        $("#submitmsg").click(function () {
            var clientmsg = $("#usermsg").val();
            var clientid = $("#uid").val();
            $.post("includes/postchat.php", {text: clientmsg,uid: clientid});
            $("#usermsg").attr("value", "");
            return false;
        });

这里是 postchat.php 文件:

if (isset($_SESSION['u_uid'])) {
include('dbh-inc.php');
$text = mysqli_real_escape_string($conn, $_POST['text']);
$uid = $_POST['uid'];
$date_current = date("Y-m-d H:i:s");
$user = $_SESSION['u_uid'];
if ($user = 'one') {

    if ($text != '') {
        $sql = "INSERT INTO messages (body, user_from, date_sent, user_to) VALUES (

            '$text',
            '$user',
            '$date_current',
            '$uid'    
        )";
        mysqli_query($conn, $sql);
    }

提交后我在数据库中的表:

【问题讨论】:

  • var clientid = $("#uid").val();引用的ID为“uid”的元素不存在

标签: php jquery sql


【解决方案1】:

改一下

<input type="hidden" name="uid" value="<?php echo $uid; ?>">

进入这个

<input type="hidden" id="uid" name="uid" value="<?php echo $uid; ?>">

由于您仅将名称作为 uid,但尝试获取不存在的 #uid 的值

【讨论】:

    【解决方案2】:

    把隐藏元素中的id字段作为uid。

    <input type="hidden" id="uid" name="uid" value="<?php echo $uid; ?>">
    

    在 JQuery 中,如果您使用 '#' 访问元素,则意味着您通过它们的 id 访问它们。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      如前所述,没有id为uid的元素。 您应该将元素标签更改为

      <input type="hidden" id="uid" name="uid" value="<?php echo $uid; ?>">
      

      或者使用下面的jQuery代码:

      var clientid = $("input[name='uid']").val();
      

      【讨论】:

        【解决方案4】:

        你可以这样做:

         <form>
                <input name="usermsg" type="text" size="63" />
                <input type="hidden" name="uid" value="<?php echo $uid; ?>">
                <input name="submitmsg" type="submit"  value="Send" />
         </form>
        <script>
        $(function () {
            $("form").submit(function (e) {
                e.preventDefault();
                $.post("includes/postchat.php", $(this).serialize());
                $("#usermsg").attr("value", "");
                return false;
            });
        });
        </script>
        

        注意

        $(this).serialize()会序列化所有的表单字段,这样你就可以轻松的添加更多的字段,不用一一添加,也不需要设置任何id。

        【讨论】:

          猜你喜欢
          • 2015-12-02
          • 1970-01-01
          • 2019-01-03
          • 1970-01-01
          • 1970-01-01
          • 2021-03-11
          • 2017-08-11
          • 1970-01-01
          • 2015-11-09
          相关资源
          最近更新 更多