Javascript 访问外部ajax参数

Javascript 访问外部ajax参数,javascript,ajax,closures,Javascript,Ajax,Closures,我有一个4参数的函数 function getToken(u, p, url, role) { var that = this; oururl = url; $.ajax({ type: 'GET', url: "/Base/getConfigUrl", success: function (data) { $.ajax({ type: 'GET', async: false, url

我有一个4参数的函数

function getToken(u, p, url, role) {
var that = this;
oururl = url;
$.ajax({
    type: 'GET',
    url: "/Base/getConfigUrl",
    success: function (data) {
        $.ajax({
            type: 'GET',
            async: false,
            url: url + '?username=' + u + '&password=' + p,
            success: 'callbackFunc',
            error : 'callbackError',
            contentType: "application/json",
            dataType: 'jsonp'
        });
    }

});
以及回调函数

function callbackFunc(resultData) {
// how to get the outer parameter
}

在回调函数中,我需要访问角色参数,我记录了
这个变量,但我找不到任何东西,就其本身而言,你找不到。
角色
变量不在正确的范围内

你需要重构你的代码,这样你就可以从它确实存在的地方获取变量,并把它传递给callbackFunc函数

有关所有更改的解释,请参见与代码内联的注释

函数callbackFunc(结果数据,角色){
//编辑上面的参数列表以接受角色作为附加参数
}
函数getToken(u、p、url、角色){
var=这个;
var oururl=url;//最佳做法:将其设为局部变量。避免全局变量。
$.ajax({
键入:“GET”,
url:“/Base/getConfigUrl”,
成功:功能(数据){
$.ajax({
键入:“GET”,
//async:false,//删除此项。您正在发出JSONP请求。无法使其同步。
url:url;
数据:{//使用对象传递数据,让jQuery正确地转义它。不要使用字符串连接将其合并到URL中。
用户名:u,
密码:p
},
成功:函数(数据){//使用函数,而不是字符串
callbackFunc(data,role);//在此处调用函数。将角色(和数据)作为参数传递。
},
错误:function(){},//使用函数,而不是字符串
//contentType:“application/json”,//删除此项。您正在发出JSONP请求。您无法设置内容类型请求头。无论如何,没有请求正文来描述请求的内容类型。
数据类型:“jsonp”
});
}
});

“我记录了此变量的日志,但找不到任何内容”-
与范围内的变量无关(除非它们也是全局变量(避免全局变量),并且您没有使用严格模式(始终使用严格模式)。非常感谢您的提示,我无法让success获得一个success函数,因为响应更像
callbackFunc({“TokenValue”:“4f21wgaacbejlyanr4jfzqmsbahnck6ocauh”})
此答案中的代码将导致jQuery生成回调名称并将其包含在查询字符串中。任何合适的JSONP端点都会尊重该名称,并在响应中使用该函数名。如果没有,则可以使用
JSONP:false,jsonpCallback:“callbackFunc”告诉jQuery使用先前定义的名称。
(您应该重命名已经重命名的全局
callbackFunc
,以便jQuery不会用success函数覆盖它)。我确实尝试了这些udpates,但当它访问callbackFunc时,第二个参数未定义,即使参数数组仍然没有第二个参数。(我尝试了jsonp:false,jsonpCallback:“callbackFunc”,但它不起作用)。我将使用任何存储来设置和获取并抛出请求。