Jquery 在执行第二个AJAX请求后重复第一个AJAX请求
我通过Ajax将一些数据发送到PHP脚本。PHP脚本检查是否存在正确的$\u会话。如果没有会话,将显示一个模式以允许用户登录。到目前为止还不错 不,我想,在登录后的数据应该再发送一次。代码如下: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 = { '
$(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();
});
});