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
}
);
在ajax中,如果我尝试访问flag
,则表示未定义。我如何在ajax函数中使用它?
任何想法?
flag和ajax都是函数体。该功能内不存在任何其他内容。
答案 0 :(得分:4)
如果您通过引用创建变量,则可以访问该变量。 Javascript中的所有对象都是引用值,只是原生值不是(例如; int,string,bool等...)
因此,您可以将标志声明为对象:
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
}
)
或强制成功功能获得您想要的参数:
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`
)
答案 1 :(得分:0)
这是一种方法。 beforeSend回调选项使您可以访问jqXHR对象和ajax设置对象。
您无法在错误附加中使用caturl,因为它不会与请求抛出错误同步。
$.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>");
}