【问题标题】:if(isset($_POST['btn-save'])) doesn't return trueif(isset($_POST['btn-save'])) 不返回 true
【发布时间】:2017-04-23 12:27:41
【问题描述】:

是的,我害怕这个老栗子。我已经阅读了很多关于这个问题的先前答案,但我无法进入这个 if 语句,即使 'btn-save' 绝对设置为我的提交按钮上的名称属性。

我正在使用本教程中的代码将表单数据发布到我的数据库:http://www.phpzag.com/ajax-registration-script-with-php-mysql-and-jquery/

我的网站结构是这样的:

    - root
        - public_html
            - js
                app.js
        register.php
        db_connect.php
        form_page.php

我的 register.php 文件看起来像这样,我在 if 语句中添加了一个回显:

    <?php
    include_once("db_connect.php");
    if(isset($_POST['btn-save'])) {
    echo "in if";
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $email_id = $_POST['email_id'];
    $address_1 = $_POST['address_1'];
    $address_2 = $_POST['address_2'];
    $address_3 = $_POST['address_3'];
    $city_town = $_POST['city_town'];
    $county = $_POST['county'];
    $post_code = $_POST['post_code'];
    $entrant_type = $_POST['entrant_type'];
    $chosen_store = $_POST['chosen_store'];
    $chosen_charity = $_POST['chosen_charity'];
    $agree_terms = $_POST['agree_terms'];
    $sql = "SELECT user_email FROM tbl_big_challenge_registrations WHERE user_email='$email_id'";
    $resultset = mysqli_query($conn, $sql) or die("database error:". mysqli_error($conn));
    $row = mysqli_fetch_assoc($resultset);      
    if(!$row['user_email']){    
        $sql = "INSERT INTO tbl_big_challenge_registrations('uid', 'first_name', 'last_name', 'user_email', 'address_1', 'address_2', 'address_3', 'town_city', 'county', 'postcode', 'entrant_type', 'crew_store', 'charity', 'agree_terms') VALUES (NULL, '$first_name', '$last_name', '$email_id', '$address_1', '$address_2', '$address_3', '$city_town', '$county', '$post_code', '$entrant_type', '$chosen_store', '$chosen_charity', 'agree_terms', NULL)";
        mysqli_query($conn, $sql) or die("database error:". mysqli_error($conn)."qqq".$sql);            
        echo "registered";
    } else {                
        echo "1";    
    }
}

?>

我的 db_connect.php 文件看起来像这样(在这篇文章中使用了虚拟值):

<?php
/* Database connection start */
$servername = "servername.com";
$username = "username";
$password = "password";
$dbname = "my_database";

$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

?>

我的 form_page.php 表单如下所示:

    <form id="2017-challenge-form" method="post" data-abide>

        <!-- form fields are here -->

        <input id="btn-submit" type="submit" name="btn-save" value="submit">

    </form>

最后我的 app.js 看起来像这样:

    $('document').ready(function() {
    /* handle form submit */
    function submitForm() {
        var data = $("#2017-challenge-form").serialize();
        $.ajax({
            type : 'POST',
            url : 'register.php',
            data : data,
            beforeSend: function() {
                $("#error").fadeOut();
                $("#btn-submit").val('Submitting...');
            },
            success : function(response) {
                if(response==1){
                    $("#error").fadeIn(1000, function(){
                    $("#error").html('<div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span>   Sorry email already taken !</div>');
                    $("#btn-submit").val('Submit');
                });
            } else if(response=="registered"){
                $("#btn-submit").html('<img src="ajax-loader.gif" />   Signing Up ...');
                setTimeout('$(".form-signin").fadeOut(500, function(){ $(".register_container").load("welcome.php"); }); ',3000);
                } else {
                    $("#error").fadeIn(1000, function(){
                        $("#error").html('<div class="alert alert-danger"><span class="glyphicon glyphicon-info-sign"></span>   '+data+' !</div>');
                        $("#btn-submit").val('Submit');
                    });
                }
            }
        });
        return false;
    }

    $("#2017-challenge-form").submit(function(event){
        // cancels the form submission
        event.preventDefault();
        // jumps into ajax submit function
        submitForm();
    });

});

我在 ajax 成功内设置了一个断点,并且在提交表单时,我希望响应的值为“已注册”(就像 PHPZag 网站上的演示:http://phpzag.com/demo/ajax-registration-script-with-php-mysql-and-jquery/

但我得到一个空字符串:

谁能看到我做错了什么或遗漏了什么?

【问题讨论】:

  • 多么混乱的帖子!
  • 您的 HTML 看起来不正确。教程中的代码是&lt;button type="submit" class="btn btn-default" name="btn-save" id="btn-submit"&gt;(...)&lt;/button&gt;,但是你有&lt;input id="btn-submit" type="submit" name="btn-save" value="submit"&gt;&lt;/button&gt;,你不能混合这些元素。
  • @DavidJorHpan 是的,我不经常在这里发帖。
  • 表单中的操作在哪里?
  • 请注意,根据jquery doc,提交不会被序列化

标签: javascript php mysql ajax


【解决方案1】:

我根据演示站点将输入更改为按钮,这很有效。根据@frz3993 的评论,btn-save 没有被添加到数据中,所以if(isset($_POST['btn-save'])) 从来都不是真的,因为它没有找到。

【讨论】:

    猜你喜欢
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2015-03-05
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多