AJAX提交表单数据失败。当我关闭e.preventdefault时,它使用$ _GET

时间:2017-10-10 16:41:23

标签: php html ajax form-data

这是我在这里的第一篇文章。对不起,如果我的英语看起来很糟糕。

我尝试使用以下代码将表单数据提交到我的signup / submit / index.php。

这是我的示例HTML

    <form name="signup_form" id="signup_form" action="submit">
     <input type="text" class="form-control" placeholder="CreateUsername" name="username" id="username" autocomplete="off">
<input type="password" class="form-control"  placeholder="CreatePassword" name="password" id="password"></form>

这是我的Ajax

 .on('success.form.fv', function(e) {

        e.preventDefault();


        loadshow();

         var $form = $(e.target),
            fv    = $form.data('formValidation');

        // Use Ajax 
        $.ajax({
            url: $form.attr('action'),
            type: 'POST',
            data: $('#signup_form').serialize(), //or $form.serialize()
            success: function(result) {
                // ... Process the result ...
                //alert(result);
                if (result=="2")
                {
                swal({
                  type: "success",  
                  title: "HiHi!",
                  text: "GoodLuck",
                  animation: "slide-from-top",
                  showConfirmButton: true
                  }, function(){   

                    var username = $("#username").val();
                    var password = $("#password").val();
                    functionA(username,password).done(functionB);

                });



                }
                else (result=="agent_na")
                {
                swal({
                  type: "error",    
                  title: "ERROR",
                  text: "N/A",
                  animation: "slide-from-top",
                  showConfirmButton: true
                });

这是我的博士

<?php
  $params = array();
$gett = $_POST["username"];
parse_str($gett,$params);

print_r ($gett); // it prints an empty array
print_r ($gett); // it prints an empty array
echo $params["username"]  // it shows undefined username index
?>

我试图在parse_str之前序列化$ gett。它返回me(){} []。

请帮我解决这个问题?我花了将近20个小时,谷歌并尝试了很多。我是JS的新手。

2 个答案:

答案 0 :(得分:1)

我尽量保持简单

<强> HTML

<?php
    // Always check param exists before accessing it
    if(isset($_POST['username']) && isset($_POST['password'])){
        // Print all the post params
        print_r($_POST);
        // or by param
        // echo "User Name: " . $_POST['username']. " <br />";
        // echo "Password: " . $_POST['username']. " <br />";
    }
?>

PHP(backend.php)

{{1}}

希望这有帮助!

答案 1 :(得分:0)

这是一个如何调试ajax调用的示例:

使用Javascript:

$(function(){
    $("#signup_form").submit(function(e) {          
        var formData = new FormData($(this));         
        $.ajax({
            type: "POST",
            url: "backend.php",
            data: formData,
            success: function(data) {
                console.log(data);
                // if (data.length > 0) ....
            }
        });
        e.preventDefault();
        return false;
    });
});

PHP:

<?php
if (isset($_POST['signup_form'])){
    $params = array();
    $gett   = $_POST['username'];
    parse_str($gett,$params);

    print_r ($gett);
    echo $_POST['username'];
}else{
    die('No $_POST data.');
}
?>

你的php代码有一些问题,你错过了一个分号,你试图从一个空数组打印,通过ajax调用不会显示任何运行时错误,因此你需要非常小心你'试图调试ajax到php调用。

希望这有帮助。