Acceda a la variable de JavaScript dentro del éxito de Ajax

var flag = false; //True if checkbox is checked $.ajax( ... //type,url,beforeSend, I cannot able to access flag here success: function() { //I cannot able to access flag here } ); 

Dentro de ajax, si bash acceder a la flag , dice que no está definida. ¿Cómo lo uso dentro de la function ajax?

¿Alguna idea?

Tanto el indicador como el ajax son el cuerpo de una function. Nada más está presente dentro de esa function.

Tienes acceso a la variable si la haces por reference. Todos los objects en Javascript son valores de references, solo los valores nativos no son (como; int, string, bool, etc.)

Entonces puedes declarar tu bandera como un object:

  var flag = {}; //use object to endure references. $.ajax( ... //type,url,beforeSend, I cannot able to access flag here success: function() { console.log(flag) //you should have access } ) 

O fuerce la function de éxito para que tenga los parameters que desea:

 var flag = true; //True if checkbox is checked $.ajax( ... //type,url,beforeSend, I cannot able to access flag here success: function(flag) { console.log(flag) //you should have access }.bind(this, flag) // Bind set first the function scope, and then the parameters. So success function will set to it's parameter array, `flag` ) 

Aquí hay una manera. La opción de callback beforeSend le da acceso tanto al object jqXHR como al object de configuration ajax.

No podrá usar caturl en el anexo de error, ya que no estará sincronizado con el error de lanzamiento de la request.

  $.ajax({ /* url, data ...& other opts*/ beforeSend:function( jqXHR, settings){ /* add url property and get value from settings (or from caturl)*/ jqXHR.url= settings.url; }, /* error to be deprecated in jQuery 1.8 , superseded by "fail" */ error: function(jqXHR, , textStatus, error){ var url=jqXHR.url; /* replace caturl with url in your append */ $('#showdata').prepend("ERROR : '" + error + "' trying to access: " + url + "</br>"); }