【问题标题】:JQuery post to submit HTML form data to php file not workingJQuery post将HTML表单数据提交到php文件不起作用
【发布时间】:2020-03-21 21:51:08
【问题描述】:

我是 Jquery 的新手,但过去我在 html/php 方面做了很多工作。我需要做的是从弹出模式中提交数据,将其插入本地主机上的 mysql 数据库,然后通过 javascript 打开下一个弹出窗口。由于重定向到 php 页面不允许您加载 js,我已经研究过使用 jquery 将数据发布到我的 phpfile,然后将插入数据并将代码返回给 jquery,然后加载下一个弹出窗口,如果帖子成功了。我尝试了不同的教程,但我无法让代码正常工作。下面是我的 index.php 文件,其中包含弹出表单和 jquery 代码...

    <div id="survey1" class="w3-modal">
    <div class="w3-modal-content w3-animate-top w3-card-4">
        <div class="w3-container w3-padding-16">
            <div class="section-heading text-center">
                <div class="col-md-12 col-xs-12">
                    <h1>BASIC <span>DETAILS</span></h1>
                    <p class="subheading">The basics of your business and your website.</p>
                </div>
            </div>
            <form role="form" class="login-form" method="post" action="http://localhost/basic.php" id="basicForm">
                <div class="input-group form-group">
                    <span class="input-group-addon" id="basic-addon1"><i class="fas fa-envelope"></i></span>
                    <input type="text" class="form-control" placeholder="Full Name" aria-describedby="basic-addon1" name="name" id="name">
                </div>
                <div class="input-group form-group">
                    <span class="input-group-addon" id="basic-addon1"><i class="fas fa-envelope"></i></span>
                    <input type="text" class="form-control" placeholder="Email" aria-describedby="basic-addon1" name="email" id="email">
                </div>
                <div class="input-group form-group">
                    <span class="input-group-addon" id="basic-addon1"><i class="fas fa-envelope"></i></span>
                    <input type="text" class="form-control" placeholder="Business Name" aria-describedby="basic-addon1" name="bname" id="bname">
                </div>
                <div class="input-group form-group">
                    <span class="input-group-addon" id="basic-addon1"><i class="fas fa-envelope"></i></span>
                    <input type="text" class="form-control" placeholder="Business Type" aria-describedby="basic-addon1" name="btype" id="bemail">
                </div>
                <div id="response"></div>
                <button class="btn" type="submit" id="submit1" name="submit1" style="width:40%; float: right;"></button>
            </form>
            <script>
                $(document).ready(function(){
                    $('#basicForm').on('submit', function(e){
                        e.preventDefault();
                        $('#submit1').prop('disabled', true);
                        var name = $('#name').val();
                        var email = $('#email').val();
                        var bname = $('#bname').val();
                        var btype = $('#bemail').val();
                        if(name == '' || email == '' || bname == '' || btype == '')
                        {
                            $('#submit1').prop('disabled', false);
                        }
                        else
                        {
                            $.post(
                                'http://localhost/TDS/basic.php', 
                                $('#basicForm').serialize(),
                                function(data)
                                {
                                    $('form').triggered("reset");
                                    $('#submit1').prop('disabled', false);
                                }
                            );
                        }
                    });
                });
            </script>
        </div>
    </div>
</div>

这是我的 php 插入文件...

<?php 
require('connection.php')

if(isset($_POST["name"]))
{
    $name = mysqli_real_escape_string($con, $_POST["name"]);
    $email = mysqli_real_escape_string($con, $_POST["email"]);
    $bname = mysqli_real_escape_string($con, $_POST["bname"]);
    $btype = mysqli_real_escape_string($con, $_POST["btype"]);

    $insert_query = "INSERT INTO Details ('Name', 'Email', 'Business Name', 'Businesss 
Type') VALUES ('".$name."', '".$email."', '".$bname."', '".$btype."')";
     if(mysqli_query($con, $insert_query))
    {
        echo json_enchode(success => 1);
    }
    else
    {
        echo json_enchode(success => 0);
    }
}
?>

任何帮助将不胜感激!

【问题讨论】:

  • 您能否指定您“无法使代码工作”的方式?你有任何错误吗?你会得到不想要的结果吗?如果你能说出你坚持的过程的哪一部分,这会很有帮助。我还可以看到您在问题中写了json_enchode,正确的名称是json_encode
  • 您也对SQL injection 敞开心扉。你应该改用prepared statements
  • 不工作是指当我单击按钮提交表单时,我的代码什么也不做????‍♂️
  • 您尝试过任何调试吗?您是否使用console.log() 语句对jQuery 进程的任何部分进行了测试?您是否检查过开发者控制台中的网络选项卡,看看您从 AJAX 调用中得到了什么样的响应?
  • PHP 被调用了吗?尝试调试它,看看它运行到哪里

标签: javascript php jquery html post


【解决方案1】:

代码本身没问题,但需要自己加载jQuery。

把它放在 HTML 开头的某处:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

(有关如何包含 jQuery 的提示请参见此处:https://www.w3schools.com/jquery/jquery_get_started.asp

除此之外,代码对我有用: - 表格提交正确; - PHP 端点收到正确的 POST 数据;

保存到数据库我没有检查,但看起来没问题。 无论如何,PHP部分超出了问题的范围。

另外,代码本身有一个小问题:没有“$('form').triggered('reset');”这样的方法,使用“$('form' ).触发('reset');"而是。

【讨论】:

  • 好的,谢谢我在标题中添加了那行,但仍然没有任何反应
  • 一个疯狂的猜测,你在按下提交之前填写了所有的表单字段吗? (如果其中任何一个为空,则代码中有一个条件不执行任何操作)
  • 是的,所有字段都已填写。我想知道我的php文件是否有问题?
  • 可能,你可以在浏览器中使用开发者控制台。有“网络”选项卡来检查请求是否转到 PHP 文件并检查响应是什么。
  • 好吧,我明天检查一下,看看是否有任何东西发布到 php
猜你喜欢
  • 1970-01-01
  • 2019-08-30
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多