【问题标题】:form field is not stored in mysql database表单字段未存储在mysql数据库中
【发布时间】:2016-04-14 06:06:29
【问题描述】:

我创建了一个由 textarea 字段组成的简单表单,因此当用户单击提交按钮时,它会链接到一个 jquery 脚本,其中包含一个执行进程并存储数据的 url,但问题是每次我点击提交时,ID & created_at 数据已存储,但 textarea 上给出的数据被忽略且未存储,以前从未遇到过此问题..请帮帮我!

HTML

<form id="form" name="form" method="POST" action="profile_1.php" class="wizard-big" autocomplete="off" enctype="multipart/form-data" required="">
    <div class="form-group col-sm-12">
        <textarea type="text" name="status" id="status" placeholder="What's on your mind.." class="form-control" style="height:100px;"></textarea>
    </div>

    <div class="col-sm-12 form-group">
        <input style="width:100%" type="submit" name="submit" id="submit" value="Post" class="btn btn-success">
    </div>

</form>

jQuery

$(document).ready(function() {
    $("#submit").click(function(e) {

        var status = $('form')[0].checkValidity();
        if (status) {
            var formData = new FormData($('form')[0]);

            $.ajax({
                url: "form_post.php",
                type: "POST",
                data: formData,
                processData: false,
                contentType: false,
                async: false,
                dataType: "JSON",

                success: function(json) {
                    if (json.error) {
                        alert(json.error_msg);
                        e.preventDefault();
                    } else {
                        alert("Post updated successfully!");
                    }
                },

                error: function(jqXHR, textStatus, errorThrown) {
                    alert(errorThrown);
                }
            });
        }

    });
});

php

<?php
    session_start();
    define('HOST','localhost');
    define('USER','**');
    define('PASS','**');
    define('DB','**');

    $response = array();

    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect');

    if(!mysqli_connect_errno()){

        $error_flag = false;
        /*foreach($_POST as $value){
            if(empty($value)){
                $error_flag = true;
                break;
            }
        }*/

        if(!$error_flag){

            //receiving post parameters
          $status =$_POST['status'];


          // create a new user profile
          $sql = "INSERT INTO status (via, status, created_at) VALUES ('".$_SESSION['vault_no']."', '$status', NOW())";

            if(mysqli_query($con,$sql)){
                $response["error"] = false;
                $response['via'] = $via;
                echo json_encode($response);
            }else{
                $response["error"] = true;
                $response["error_msg"] = "INSERT operation failed";
                echo json_encode($response);
            }
        }else{
            $response["error"] = true;
            $response["error_msg"] = "Few fields are missing";
            echo json_encode($response);
        }

    }else{
        $response["error"] = true;
        $response["error_msg"] = "Database connection failed";
        echo json_encode($response);
    }
?>

【问题讨论】:

  • 您是否在浏览器的网络控制台中检查了 AJAX 调用正在执行?确保它发送正确的表单数据,并且您是否尝试在 .php 文件中调试 $_POST?
  • 检查 ajax 成功返回什么?
  • 好吧..!!我会检查的!
  • 警告:使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 从不将$_POST数据直接放入查询中。
  • ajax 正在返回一条成功消息“帖子更新成功!”每次我点击提交

标签: javascript php jquery html mysql


【解决方案1】:

注意:这个问题的其他读者可以在 cmets 中找到解决方案

也许这对你有帮助。您需要将其更改为您的愿望课程

并保存此功能,将来可能对您有用。

此函数将表单序列化为应该如何完成。

<script>
$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$(function() {
    $('form').submit(function() {
        var formData = $('form').serializeObject();
        $.ajax({
            data: formData,
            type: 'POST',
            url: 'form_post.php',
            success: function(result) {
                $('#result').html(result);
            },
            error: function(jqXHR, textStatus, errorThrown) { alert(textStatus); }
        });
        return false;
    });
});
</script>

【讨论】:

  • 谢谢!先生,对我来说似乎是一个有趣的脚本,但遗憾的是它没有帮助我!
  • 你使用了函数 serializeObject 而不是 new Formdata?
  • 是的,先生,我确实使用了您的脚本..!!但是现在面临的重要问题是我已经提到了该文本区域的“必需”,但即使这样也被忽略并且没有弹出任何类型的必需!如果用户在没有任何数据的情况下直接点击提交,则消息。!
  • 尝试将$('form')[0]改为$("#status")
  • 对不起,先生,但它不起作用!但是非常感谢您引导我!
猜你喜欢
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 2021-10-11
  • 2023-03-31
  • 2021-03-16
  • 1970-01-01
  • 2011-09-24
相关资源
最近更新 更多