Requisição $http assincronica AngularJS
Pessoal eu tenho uma seguinte requisição $http no angular
//send data
$scope.send = function(){
var manual = $("#origin_1").prop("checked");
var agenda = $("#origin_2").prop("checked");
var grupo = $("#origin_3").prop("checked");
var expressa = $("#origin_4").prop("checked");
var flash = $("#flash").prop("checked");
var modelo = $("#salvar_modelo").prop("checked");
var twoways = $("#2ways").prop("checked");
var rota = $("#rota").prop("checked");
var twoways_email = $("#2ways_email").val();
var twoways_url = $("#2ways_url").val();
var destinatario = $('#destManual').tagsinput('items');
var etiqueta = $("#etiquetas").tagsinput('items');
var campanha = $('#campaingName').val();
var remetente = $('#remetente_text').val();
var ddi = $("#pais").val();
var pais = $("#pais option:selected").text();
var texto = $("#smsText").val();
var programaData = $("#schedule_date").val();
var programaHora = $("#schedule_time").val();
var programaZone = $("#schedule_timezone option:selected").text();
swal({
title: 'Iniciar envio da campanha?',
text: "Ao confirmar, o processo não poderá ser pausado e/ou cancelado",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Sim, iniciar!',
cancelButtonText: 'Não, espere!',
confirmButtonClass: 'btn btn-sweet btn-success',
cancelButtonClass: 'btn btn-sweet btn-danger',
padding: '20',
buttonsStyling: false
}).then(function () {
swal(
{
title: 'Campanha iniciada!',
text: "Sua campanha está sendo disparada. Não saia desta página enquanto processamos todos os dados.",
showCancelButton: false,
showConfirmButton: false,
imageUrl: "https://smsfire.com.br/portal/includes/images/loader.gif",
timer: 5000
}
),
$http({
url: "/portal/includes/modules/sms/send-campaing.php",
method: "POST",
headers: {'Content-Type': 'application/json'},
data: {
origem:[{
manual:manual,
agenda:agenda,
grupo:grupo,
expressa:expressa
}
],
pais:pais,
ddi:ddi,
destinatario:destinatario,
texto:texto,
campanha:campanha,
modelo:modelo,
etiqueta:etiqueta,
programa:[{
data:programaData,
hora:programaHora,
zone:programaZone
}
],
rota:rota,
remetente:remetente,
flash:flash,
modelo:modelo,
twoways:[{
ativa:twoways,
email:twoways_email,
url:twoways_url
}]
} }.then(function (response) {
swal({
title:'Envio finalizado!',
text:'O processamento da campanha foi concluído. Acesse o menu Estatísticas para obter detalhes',
type: 'success'
})
}).then(function (){
$timeout(function () {
location.reload();
}, 3000);
})
}, function (dismiss) {
// dismiss can be 'cancel', 'overlay',
// 'close', and 'timer'
if (dismiss === 'cancel') {
swal(
'Cancelado!',
'O processamento da campanha foi cancelado.',
'error'
)
}
});
});
**O que ela faz?**
Emito um alert perguntando se posso processar a campanha.
Usuario clica SIM e chamo o arquivo PHP para processar a requisição.
Assim que a requisição for completada imprimo outro alert com timeout de 3seg e recarrego a pagina
**Está funcionando?**
Sim perfeitamente!
**Qual o problema?**
O tamanho da requisição!
Essa chamada pode conter uma infinidade de dados que, talvez, demore mais que os 90 segundos de timeout que meu servidor tem no PHP para recuperar o response.
O script, segue fazendo a requisição passados os 90segundos, mas ao tentar imprimir o response, tenho erro 500-timeout.
**O que estou precisando**
Realizar uma chamada assincronica, ou seja, deixar que o meu sistema continue rodando enquanto essa requisição $http fique rodando em background.
**Como tentei:**
No meu php tentei utilizar o session_write_close() porem isso faz com que as SESSIONS sejam deletadas e todo o meu processo de looping é dado como TRUE já que tenho condicionamentos baseado em alguns parametros da session. Desta forma funciona mas não da forma que preciso.
Na propria requisição $http há algum parametro que eu possa indicar para que pelo JS seja compreensivel que a requisição é assincronica?
Eu não consegui encontrar detalhes deste tipo na documentação do angular.
Alguma sugestão?Discussão (9)
Carregando comentários...