¿Cómo usar ajaxStart si el método $ .ajax está definido en una clase?
Frecuentes
Visto 1,903 equipos
0
Creé el método ajax en una clase en mi archivo js. A continuación se adjunta para la referencia
var ajaxcall =
{
SitePath: '',
data: '',
url: '',
callbackfunction: '',
fileElementId: '',
AjaxRequest: false,
callback: true,
async: false,
folder: '',
filename: '',
Call: function () {
if (ajaxcall.AjaxRequest == true) {
alert(ajaxcall.AjaxRequest);
return;
}
else {
try {
ajaxcall.AjaxRequest == true;
alert('b');
$.ajax({
type: "POST",
url: ajaxcall.url,
data: ajaxcall.data,
contentType: "application/json; Characterset=utf-8",
dataType: "json",
async: false,
success: function (data) {
if (ajaxcall.callback == true) {
ajaxcall.callbackfunction(data);
}
},
error: function (request, status, error) {
//alert("Exception Handling : \n" + request.responseText);
alert('Unable to process the request at this moment! Please try again later.');
},
complete: function () {
ajaxcall.AjaxRequest = false;
}
});
}
catch (e) {
ajaxcall.AjaxRequest == false;
// alert("Error Catch : " + e.Description + '\n' + 'Message: ' + e.Message);
}
}
},
AjaxFileUpload: function () {
$.ajaxFileUpload({
type: "POST",
url: "../GenericHandlers/FileUploader.ashx?path=" + ajaxcall.folder,
dataType: 'json',
async: false,
secureuri: false,
fileElementClass: ajaxcall.fileElementClass,
success: function (data) {
var data = data.toString();
ajaxcall.filename = data.substring(6, data.length - 7);
alert(ajaxcall.filename);
return true;
}
});
}
};
Ahora quiero mostrar un div cuando comienza la llamada ajax y ocultarlo después de finalizar. Así que para eso he usado
$(document).ready(function(
$('#Loading').ajaxStart(function () {
alert('a');
$('#Loading').show();
}).ajaxStop(function () {
$('#Loading').hide();
});
});
Pero cuando llamo al método ajax (definido arriba en la clase), el control entra primero en el método ajax y luego en ajaxStart.
No sé por qué está sucediendo. Por favor ayuda.
2 Respuestas
1
Use el global recomendado para estos:
$.ajaxStart(function() {
$("#Loading").show();
});
$.ajaxComplete(function() {
$("#Loading").hide();
});
Pruébelo de esta manera adjunto a su elemento de identificación de carga:
$("#Loading").ajaxStart(function() {
$(this).show();
});
$("#Loading").ajaxComplete(function() {
$(this).hide();
});
Respondido el 01 de junio de 12 a las 15:06
0
AjaxStart llama cuando comienza la solicitud http, no cuando se ejecuta el método ajax.
Respondido el 01 de junio de 12 a las 12:06
Ok, por favor ayúdame a corregir el código. Cómo mostrar un div de carga antes de enviar cualquier solicitud ajax y ocultarlo después de completarlo. - Jitendra Pancholí
Hola, $("#Loading").bind("ajaxStart", function () { $("#Loading").show(); }).bind("ajaxComplete", function () { $("#Loading ").esconder(); }); este código no funciona para mí. - Jitendra Pancholí
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas ajax jquery or haz tu propia pregunta.
No funciona y da "Error de tiempo de ejecución de Microsoft JScript: el objeto no admite la propiedad o el método 'ajaxStart'" en IE. estoy usando jquery-1.7.2.js - Jitendra Pancholí
Agregué un ejemplo adjuntándolo a su elemento por id. - Marcos Schultheiss