Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在执行第二个AJAX请求后重复第一个AJAX请求_Jquery_Ajax - Fatal编程技术网

Jquery 在执行第二个AJAX请求后重复第一个AJAX请求

Jquery 在执行第二个AJAX请求后重复第一个AJAX请求,jquery,ajax,Jquery,Ajax,我通过Ajax将一些数据发送到PHP脚本。PHP脚本检查是否存在正确的$\u会话。如果没有会话,将显示一个模式以允许用户登录。到目前为止还不错 不,我想,在登录后的数据应该再发送一次。代码如下: $(document).on('click', '#button', function(e) { var content = $('#anything').val(); var id = $('#anything').attr('data-id'); var data = { '

我通过Ajax将一些数据发送到PHP脚本。PHP脚本检查是否存在正确的$\u会话。如果没有会话,将显示一个模式以允许用户登录。到目前为止还不错

不,我想,在登录后的数据应该再发送一次。代码如下:

$(document).on('click', '#button', function(e) {
    var content = $('#anything').val();
    var id = $('#anything').attr('data-id');
    var data = { 'id': id, 'content': content };

    $.ajax({ url: "script.php", type: "POST", data: data, dataType: "json" })
    .done(function( json ) { 
        if (json.response) {
            // Everything is fine, so do something with the data
        }
        else {
            modal(login);
            // Showing modal for login. After login repeat the AJAX
        }
    });
});
如果用户未登录,则会创建一个表单并显示为模式:

function modal(type) {
    if ( !$('#modal').length ) {
        if (type == "login") {
            $('body').prepend('<div id="modal"><h1>Login</h1><form id="loginform"><input type="text" name="username" class="input login_input" id="username"><input type="password" name="password" class="input login_input" id="password"><button type="submit">Login</button></form></div>');
        }
    }
}

但是在这次登录之后,第一个数据应该再发送一次,以完成第一个用户请求。我该怎么做呢?

您可以编写一个函数,作为一个单独的函数调用第一个ajax,并且可以从dom ready和第二个ajax调用该函数

function initiate() {
    var content = $('#anything').val();
    var id = $('#anything').attr('data-id');
    var data = {
        'id': id,
        'content': content
    };

    $.ajax({
        url: "script.php",
        type: "POST",
        data: data,
        dataType: "json"
    }).done(function (json) {
        if (json.response) {
            // Everything is fine, so do something with the data
        } else {
            modal('login');
            // Showing modal for login. After login repeat the AJAX
        }
    });
}
$(document).on('click', '#button', initiate);

function modal(type) {
    if (!$('#modal ').length) {
        if (type == "login") {
            $('body ').prepend(' < div id = "modal" > < h1 > Login < /h1><form id="loginform"><input type="text" name="username" class="input login_input" id="username"><input type="password" name="password" class="input login_input" id="password"><button type="submit">Login</button > < /form></div > ');
        }
    }
}

$(document).on('submit ', '#loginform ', function (event) {
    var username = $('#username ').val();
    var password = $('#password ').val();
    $.ajax({
        url: "login.php",
        type: "POST",
        data: {
            'username': username,
            'password': password
        },
        dataType: "json"
    }).done(function (json) {
        // User is now logged in -> Repeat sending first data
        initiate();
    });
});
函数启动(){
var content=$(“#任何东西”).val();
var id=$(“#任何东西”).attr('data-id');
风险值数据={
“id”:id,
“内容”:内容
};
$.ajax({
url:“script.php”,
类型:“POST”,
数据:数据,
数据类型:“json”
}).done(函数(json){
if(json.response){
//一切都很好,所以对数据做点什么吧
}否则{
模态(“登录”);
//显示登录模式。登录后重复AJAX
}
});
}
$(文档)。在('单击','按钮',启动);
功能模态(类型){
如果(!$('#模态')。长度){
如果(类型==“登录”){
$('body').prepend('

登录

登录); } } } $(文档).on('submit','#loginform',函数(事件){ var username=$('#username').val(); var password=$('#password').val(); $.ajax({ url:“login.php”, 类型:“POST”, 数据:{ “用户名”:用户名, “密码”:密码 }, 数据类型:“json” }).done(函数(json){ //用户现在已登录->重复发送第一个数据 发起(); }); });
但我的问题是,有很多不同类型的形式和动作。它们都需要不同的数据。因此,在发送ajax之前,我创建了var
数据。如何从第一个ajax到第二个ajax获取var数据?
function initiate() {
    var content = $('#anything').val();
    var id = $('#anything').attr('data-id');
    var data = {
        'id': id,
        'content': content
    };

    $.ajax({
        url: "script.php",
        type: "POST",
        data: data,
        dataType: "json"
    }).done(function (json) {
        if (json.response) {
            // Everything is fine, so do something with the data
        } else {
            modal('login');
            // Showing modal for login. After login repeat the AJAX
        }
    });
}
$(document).on('click', '#button', initiate);

function modal(type) {
    if (!$('#modal ').length) {
        if (type == "login") {
            $('body ').prepend(' < div id = "modal" > < h1 > Login < /h1><form id="loginform"><input type="text" name="username" class="input login_input" id="username"><input type="password" name="password" class="input login_input" id="password"><button type="submit">Login</button > < /form></div > ');
        }
    }
}

$(document).on('submit ', '#loginform ', function (event) {
    var username = $('#username ').val();
    var password = $('#password ').val();
    $.ajax({
        url: "login.php",
        type: "POST",
        data: {
            'username': username,
            'password': password
        },
        dataType: "json"
    }).done(function (json) {
        // User is now logged in -> Repeat sending first data
        initiate();
    });
});