我有一个负责上传的ajax调用(通过SFTP)。它们是大文件,所以我无法锁定页面。 在同一页面上,我有一个搜索字段,通过ajax在表格中显示结果。 问题:当我调用上传ajax屏幕上的所有内容仍然有效,但搜索ajax请求只在上传结束时刷新表。如何在ajax上传完成之前请求搜索ajax并在屏幕上显示结果?
注意:所有调用都是异步的
$(document).on("keyup", "#idsearchall", function(){
var valor = $(this).val();
updatetable(valor);
});
function ajax(options) {
return new Promise(function (resolve, reject) {
$.ajax(options).done(resolve).fail(reject);
});
}
var updatetable = function(text){
ajax({
method: "POST",
url: ".../index.php?status=ajax",
async: true,
data: {mk: 4, search: text}
}).then(
function sucess(data, textStatus, jqXHR) {
$('#tablesearchall').html(data); //Success works well
},
function fail(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
).catch(function errorHandler(error) {
console.log(error);
});
};
$(document).on("click", "a[input-send='upload']", function(){
//**... ... ... codes to get file information
var formData = new FormData();
formData.append('documento[]', fileSelect[0], fileSelect[0].name);
ajax({
method: "POST",
url: ".../transmissao.php?status=ajax&mk=1",
data: formData,
processData: false,
async: true,
contentType: false
}).then(
function sucess(data, textStatus, jqXHR) {
var splitmsg = data.split("|");
if(parseInt(splitmsg[0])== 1){
var pathftp = splitmsg[1];
alert('success', "info"); //Success works well
}
},
function fail(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
).catch(function errorHandler(error) {
console.log(error);
});});
非常感谢提前
答案 0 :(得分:0)
这是我在评论中的意思?这不适合你正在尝试的东西吗?
$.when(
$.ajax({
url: '/echo/html/',
success: function(data) {
alert('request complete')
}
}),
$.ajax({
url: '/echo/html/',
success: function(data) {
alert('request complete')
}
})
).then( function(){
alert('all complete');
});
答案 1 :(得分:0)
解决!! 问题出在php会话中
在php文件中:
//Get info Session
$user = $_SESSION['id'];
//write and close the session to answer the request
session_write_close();
/***
**** here is the upload part
***/
session_start($user); //I reopen the session