简体   繁体   English

PHP 不向 AJAX 返回数据

[英]PHP is not returning data to AJAX

I'm testing a login form that submits data via Ajax to the PHP processing file.我正在测试通过 Ajax 将数据提交到 PHP 处理文件的登录表单。 Once I click the submit button it just redirects me to PHP file and not returning data from PHP.单击提交按钮后,它只会将我重定向到 PHP 文件,而不是从 PHP 返回数据。 The form is inside a bootstrap modal.该表单位于引导模式内。 I'm just new to jquery and ajax so I hope someone helps.我只是 jquery 和 ajax 的新手,所以我希望有人能提供帮助。 Thanks谢谢

HTML HTML

<form action="login-process.php" id="test-form" method="post">
                    <div class="form-group">
                    <input type="hidden" name="login-form">
                        <input type="email" class="form-control form-control-lg" name="login-email" id="loginEmail" placeholder="Email address" required>
                    </div>

                    <div class="form-group">
                        <input type="password" class="form-control form-control-lg" name="login-pass" id="loginPassword" placeholder="Password" required>
                    </div>

                    <button type="submit" class="btn btn-lg btn-block btn-primary mb-4">Sign in</button>
                </form>

JQuery script is placed at site footer after jquery.js cdn JQuery 脚本放置在 jquery.js cdn 之后的站点页脚

$(document).ready(function(){

    // Process form
    $('#test-form').submit(function(event){

        // get form data
        var formData = {
            'email' :           $('input[name=login-email]').val(),
            'password' :        $('input[name=login-pass]').val();
        };

        // process the form
        $.ajax({
            type        : 'POST', // define the HTTP method we want to use
            url         : 'process.php', // url to send data
            data        : formData, // data object
            dataType    : 'json', // what type of data to expect back from server
            encode      : true
        })
        // using done promise call back
        .done(function(data){

            // log data to console
            console.log(data);

            if (data.email-msg) {
                alert("success");
            }

        });

        // stop the form from submitting and refresing the page
        event.preventDefault();
    });
});

process.php进程.php

<?php 

$data = array();    // array to hold pass back data

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $email = $_POST['login-email'];
    $password = $_POST['login-pass'];

    $data['email-msg'] = $email;
    $data['pw-msg'] = $password;

    echo json_encode($data);
} ?>

try this brother试试这个兄弟

 $(document).ready(function(){ $('#test-form').on('submit', function(event){ event.preventDefault(); $.ajax({ url:"action="login-process.php" ", method:"POST", data:$(this).serialize(), success:function(data){ console.log("data send"); } }) }); });
 <form id="test-form" method="post"> <div class="form-group"> <input type="hidden" name="login-form"> <input type="email" class="form-control form-control-lg" name="login-email" id="loginEmail" placeholder="Email address" required> </div> <div class="form-group"> <input type="password" class="form-control form-control-lg" name="login-pass" id="loginPassword" placeholder="Password" required> </div> <button type="submit" class="btn btn-lg btn-block btn-primary mb-4">Sign in</button> </form>

You Have syntax error in javascript code.您在 javascript 代码中有语法错误。

change your code改变你的代码

var formData = {
            'email' :           $('input[name=login-email]').val(),
            'password' :        $('input[name=login-pass]').val();
        };

to

var formData = {
            'email' :           $('input[name=login-email]').val(),
            'password' :        $('input[name=login-pass]').val()
        };

It will solve the problem它会解决问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM