访问ajax中的javascript变量成功
在ajax内部,如果我试图访问访问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函数中使用它
有什么想法吗
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>");
}