首页 > 解决方案 > 为什么ajax数据传输后PHP代码没有运行?

问题描述

$(function () {
$(
    "#contactForm input,#contactForm textarea,#contactForm button"
).jqBootstrapValidation({
    preventSubmit: true,
    submitError: function ($form, event, errors) {
        // additional error messages or events
    },
    submitSuccess: function ($form, event) {
        event.preventDefault(); // prevent default submit behaviour
        // get values from FORM
        var name = $("input#name").val();
        var email = $("input#email").val();
        var phone = $("input#number").val();
        var city = $("input#city").val();
        var qualification = $("input#qualification").val();
        var about = $("textarea#about").val();
        var reason = $("textarea#reason").val();
        var firstName = name; // For Success/Failure Message
        // Check for white space in name for Success/Fail message
        if (firstName.indexOf(" ") >= 0) {
            firstName = name.split(" ").slice(0, -1).join(" ");
        }
        alert("Fuck " + $("input#name").val());

        $this = $("#sendMessageButton");
        $this.prop("disabled", true); // Disable submit button until AJAX call is complete to prevent duplicate messages
        $.ajax({
            url: "/assets/mail/register.php",
            type: "POST",
            data: {
              name: name,
              phone: phone,
              email: email,
              city: city,
              qualification: qualification,
              about: about,
              reason: reason,
            },
            cache: false,
            success: function () {
                // Success message
                $("#success").html("<div class='alert alert-success'>");
                $("#success > .alert-success")
                    .html(
                        "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;"
                    )
                    .append("</button>");
                $("#success > .alert-success").append(
                    "<strong>Your message has been sent. </strong>"
                );
                $("#success > .alert-success").append("</div>");
                //clear all fields
                $("#contactForm").trigger("reset");
            },
            error: function () {

                // Fail message
                $("#success").html("<div class='alert alert-danger'>");
                $("#success > .alert-danger")
                    .html(
                        "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;"
                    )
                    .append("</button>");
                $("#success > .alert-danger").append(
                    $("<strong>").text(
                        "Sorry " +
                            firstName +
                            ", it seems that my mail server is not responding. Please try again later!"
                    )
                );
                $("#success > .alert-danger").append("</div>");
                //clear all fields
                $("#contactForm").trigger("reset");
            },
            complete: function () {
                setTimeout(function () {
                    $this.prop("disabled", false); // Re-enable submit button when AJAX call is complete
                }, 1000);
            },
        });
    },
    filter: function () {
        return $(this).is(":visible");
    },
 });

  $('a[data-toggle="tab"]').click(function (e) {
    e.preventDefault();
    $(this).tab("show");
  });
});

$("#name").focus(function () {
  $("#success").html("");
});

PHP 代码

<?php

  if(empty($_POST['name'])      ||
  empty($_POST['number'])     ||
  empty($_POST['qualification'])     ||
  empty($_POST['city'])   ||
  empty($_POST['about'])   ||
  empty($_POST['reason'])   ||
  !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
  {
    echo "<script>alert(No arguments Provided!);</script>";
    return false;
  }

  echo "<script>alert(Come On);</script>";

?>

从 HTML 输入视图中,我成功地获取了数据。但是 PHP 文件中的代码由于某种原因没有运行。
ajax 代码显示“消息已发送”,仅在数据传输成功但 PHP 代码未运行时才显示我想将 ajax 代码中的数据添加到 MySQL 数据库中,为此我需要将数据传输到PHP文件

标签: javascriptphphtmlcssajax

解决方案


AJAX 请求的响应不会自动执行。如果你想让它被执行,你需要在你的函数中将它添加到 DOM 中success

            success: function (response) {
                $('body').append(response); // execute the returned script.
                // Success message
                $("#success").html("<div class='alert alert-success'>");
                $("#success > .alert-success")
                    .html(
                        "<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;"
                    )
                    .append("</button>");
                $("#success > .alert-success").append(
                    "<strong>Your message has been sent. </strong>"
                );
                $("#success > .alert-success").append("</div>");
                //clear all fields
                $("#contactForm").trigger("reset");
            },

推荐阅读