访问ajax中的javascript变量成功

访问ajax中的javascript变量成功,javascript,jquery,ajax,Javascript,Jquery,Ajax,在ajax内部,如果我试图访问标志,它会说它没有定义。如何在ajax函数中使用它 有什么想法吗 flag和ajax都是函数的主体。该函数中没有其他内容。如果通过引用创建变量,则可以访问该变量。Javascript中的所有对象都是引用值,只是原语值不是(例如:int、string、bool等) 因此,您可以将您的标志声明为对象: var flag = false; //True if checkbox is checked $.ajax({ ... //type, url, beforeS

在ajax内部,如果我试图访问
标志
,它会说它没有定义。如何在ajax函数中使用它

有什么想法吗


flag和ajax都是函数的主体。该函数中没有其他内容。

如果通过引用创建变量,则可以访问该变量。Javascript中的所有对象都是引用值,只是原语值不是(例如:int、string、bool等)

因此,您可以将您的标志声明为对象:

var flag = false; //True if checkbox is checked
$.ajax({
    ... //type, url, beforeSend, I'm not able to access flag here
    success: function(){
        // I'm not able to access flag here
    }
});
或强制成功函数具有所需的参数:

var flag = {}; //use object to endure references.

$.ajax({
    ... //type, url, beforeSend, I'm not able to access flag here
    success: function(){
        console.log(flag) //you should have access
    }
});

这里有一个方法。beforeSend回调选项允许您访问jqXHR对象和ajax设置对象

您将无法在错误追加中使用caturl,因为它将与请求引发错误不同步

var flag = true; //True if checkbox is checked

$.ajax({
    ... //type, url, beforeSend, I'm not 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`
});
$.ajax({
/*url、数据…&其他选项*/
发送前:函数(jqXHR,设置){
/*添加url属性并从设置(或从caturl)获取值*/
jqXHR.url=settings.url;
},
/*在jQuery 1.8中被弃用的错误,替换为“失败”*/
错误:函数(jqXHR、textStatus、error){
var url=jqXHR.url;
/*在附加中用url替换caturl*/
$('#showdata')。在尝试访问“+url+”
”)时,添加(“错误:'+ERROR+””; }
因为,一旦ajax调用触发成功回调,标志将不在范围内。@RajaprabhuAravindasamy否,
success
不会神奇地从上下文中删除变量。这里,
标志甚至无法从ajax选项访问,所以OP将其设置在ajax方法范围之外$您到底在哪里定义标志?我做了一个测试,它工作得很好。闭包意味着如果
标志
$.ajax
调用在同一范围内,那么标志将可用(它是)。您的问题中缺少一些代码…我感觉这不是您的实际代码。这应该可以正常工作@GopsAB您误解了我。我不是说这不是您自己的代码,我是说您发布的代码不代表您描述的问题。您不需要在此处设置成功回调的上下文。OP评论
//键入,url,在发送之前,我无法访问此处的标志
,因此这与绑定(此,标志)相同
你们中有人能帮我解决此问题吗?
 $.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>");
   }