【问题标题】:Ajax did not get a reply after sending POST to PHPAjax 向 PHP 发送 POST 后没有得到回复
【发布时间】:2017-05-05 03:00:28
【问题描述】:

我正在建立一个网站,一个简单的注册表单。 我通过 AJAX 发送数据,无法得到对请求的肯定或否定回答。 如果我直接发送到 PHP 文件,一切正常,如果使用 AJAX,AFTERSUCCESS 不会做任何事情。 我使用 Jquery 和 JQUERYFORMS

index.php:

<form class="uk-form" id="register_frm" action="php/register.php" method="POST" enctype="multipart/form-data">
    <input type="email" name="email" id="email" class="uk-width-1-1 uk-form-large" value="aaa@eee.vv">
    <input value="111" type="password" name="pass" id="pass" class="uk-width-1-1 uk-form-large" >
    <input value="111" type="password" name="pass2" id="pass2" class="uk-width-1-1 uk-form-large">
    <button class="uk-button uk-button-primary uk-button-large uk-align-center" type="submit" name="submit_btn" id="submit_btn" value="reg">Register <i class="uk-icon uk-icon-spin uk-icon-spinner" id="output"></i></button>
    <div id="output"></div>
</form>

Javascript:

$(document).ready(function() {
    $("#register_frm").submit(function(event){
        var options = { 
            target:   '#output',   // target element(s) to be updated with server response 
            beforeSubmit:  beforeSubmit,  // pre-submit callback 
            success:       afterSuccess,  // post-submit callback 
            uploadProgress: OnProgress, //upload progress callback
            dataType    : 'json',
            resetForm: false        // reset the form after successful submit 
        }; 

        $('#register_frm').ajaxSubmit(options);            
        // always return false to prevent standard browser submit and page navigation 
        return false;

        function afterSuccess(data)
        {
            console.log(data);
        }

        function beforeSubmit(){
        }

        function OnProgress(event, position, total, percentComplete)
        {
            //Progress bar
        }

        function bytesToSize(bytes) {
            var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
            if (bytes == 0) return '0 Bytes';
            var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
            return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
        }
    });
}); 

PHP

if (isset($_POST['submit_btn'])&& $_POST['submit_btn']== 'reg') {
    $data = array();
    $errors = array();

    $email=trim($_POST['email']);
    $pass=trim($_POST['pass']);
    $pass2=trim($_POST['pass2']);

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors['email']="Invalid email";
    }

    if (empty($pass) || empty($pass2)) {
        $errors['pass']="Invalid passwords";
    }

    if (strcmp($pass, $pass2)) {
        $errors['pass']="Invalid passwords";
    }

    if (empty($errors)) {
        $add_user= add_new_user($conn,$email,$pass);
    }

    if ($add_user) {
        $data['success'] = true;
    } else {
        $data['success'] = false;
    }

    echo json_encode($data);
}

【问题讨论】:

  • 你有 jquery 表单插件吗?/
  • 是的,我使用的是 v20131228 版本
  • 返回false后为什么还要定义方法?他们应该在它上面......
  • @epascarello 如果没有,那我跳到 PHP
  • @epascarello 没关系——JS 使用hoisting

标签: php ajax ajaxform


【解决方案1】:

嗯,我发现了问题。 在 PHP 中接收数据我检查是否按下了 SUBMIT 按钮以及他的 VALUE。 AJAX 不发送按钮,所以我添加了一个隐藏字段并检查我是否得到了正确的表单。 谢谢大家

<form class="uk-form" id="register_frm" action="php/register.php" method="POST" enctype="multipart/form-data">
<input type="email" name="email" id="email" class="uk-width-1-1 uk-form-large" value="aaa@eee.vv">
<input value="111" type="password" name="pass" id="pass" class="uk-width-1-1 uk-form-large" >
<input value="111" type="password" name="pass2" id="pass2" class="uk-width-1-1 uk-form-large">
<input type="hidden" name="reg" id="reg">
<button class="uk-button uk-button-primary uk-button-large uk-align-center" type="submit" name="submit_btn" id="submit_btn" value="reg">Register <i class="uk-icon uk-icon-spin uk-icon-spinner" id="output"></i></button>
<div id="output"></div>

PHP

if (isset($_POST['reg'])) {}

【讨论】:

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