dongliantong3229 2015-01-24 09:06
浏览 70
已采纳

用户登录后将立即提交用户表单

I am new in AJAX. I'm developing a site where a user can post details about there item. User can insert data into the form without logging in but when the user clicks submit, an AJAX script will check if the user session exist or not, if not login modal will appear.

What I'm trying to say here is as soon as the user logs in the item form will be submitted instantly and automatically with AJAX.

I did it in this way, when user clicks item form submit a script check for user session, if session does not exists, the login modal will appear via AJAX and I set a JavaScript timer after a certain interval which will check if still the user has logged in or not.

This is my jQuery script

$(function() {
    $('form').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            url: 'ajxprocess/checksignin.php',
            success: function(result) {
                if (result == '0') {
                    $.ajax({
                        cache: false,
                        url: 'ajxload/signin_gl.php',
                        success: function(result) {
                            $('#static').modal('show');
                            $('#static').html(result);
                            var myTimer = setInterval(function() {
                                checksignin()
                            }, 500);
                        }
                    });
                } else {
                    $.ajax({
                        type: 'post',
                        url: 'ajxprocess/finalprocess.php',
                        data: $('form').serialize(),
                        beforeSend: function() {
                            $('#final').html("<img src='assets/img/input-spinner.gif' />");
                        },
                        success: function(html) {
                            if (html == '1') {
                                window.location = 'posts.php';
                            } else {
                                $('#final').html('Somthing went wrong during the process!');
                            }
                        }
                    });
                }
            }
        });
    });
});

And this is my login checker

function checksignin() {
    $.ajax({
        url: 'ajxprocess/checksignin.php',
        success: function(result) {
            if (result !== '0') {
                $.ajax({
                    type: 'post',
                    url: 'ajxprocess/finalprocess.php',
                    data: $('form').serialize(),
                    beforeSend: function() {
                        $('#final').html("<img src='assets/img/input-spinner.gif' />");

                    },
                    success: function(html) {
                        if (html == '1') {
                            window.location = 'posts.php';
                        } else {
                            $('#final').html('Error occured during the process!');
                        }
                    }
                });
            }
        }
    });
}

The problem is I don't want to use timer. Is there any other process to do it?

  • 写回答

1条回答 默认 最新

  • duanao2585 2015-01-24 09:32
    关注

    You have the success and error functions of the login ajax, you can submit the form if successful and do something else on error. Till then you can show a loading symbol. That way you need not use a timer.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题