select ajax url 基于if条件
select ajax url based on if condition
我有两个 AJAX 请求,我想根据用户是否为管理员更改第二个 AJAX 的 URL。如果用户不是管理员,将在 AJAX 调用中使用不同的 URL。我收到一条错误消息,指出 URL:abcUrl 未定义。我知道我可能会因为提出这样的问题而被否决,但我真的需要更新第二个 ajax URL,这对我来说将是一次学习经历,因为我是新手 AJAX .非常感谢任何帮助。
var url;
$.ajax( {
url: sharepointBaseUrl + "_api/web/currentUser/groups?$select=title",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
for (var i = 0, len = items.length; i < len; i++) {
if (items[i].Title == adminGroupName) {
self.currentUserIsAdmin(true);
abcUrl="Some Url1";
}
else{
abcUrl="Some Url2";
}
}
},
error: function (data) { alert("ERROR: " + data) }
} );
$.ajax( {
url: sharepointScenarioListUrl + abcUrl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
items.forEach( function(item) {
//some function
});
},
error: function (data) { alert("ERROR: " + data);
console.log(sharepointScenarioListUrl +
abcUrl);console.log(data);
}
} );
我认为 abcUrl 未定义,因为第二个 AJAX 调用发生在第一个 returns 之前;由于 abcUrl 从未在您的代码中初始化,因此它是未定义的。如果你想确保第二个 AJAX 调用仅在第一个 returns 之后发生,你可以将第二个 ajax 调用放在第一个 AJAX 请求的成功回调中.
您可以使用 jquery when
或 deferred
方法。
伪将是这样的:
//get URL for account type
getAccountURL()
//when done return URL
.done(function(url){
//get sharepoint URL
getSharePointURL(url)
};
一个简单的更改即可解决此问题:
function firstCall()
{
var url;
var abcUrl;
$.ajax( {
url: sharepointBaseUrl + "_api/web/currentUser/groups?$select=title",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
for (var i = 0, len = items.length; i < len; i++) {
if (items[i].Title == adminGroupName) {
self.currentUserIsAdmin(true);
abcUrl="Some Url1";
}
else{
abcUrl="Some Url2";
}
}
secondCall(abcUrl);
},
error: function (data) { alert("ERROR: " + data) }
} );
}
function secondCall(abcUrl)
{
$.ajax( {
url: sharepointScenarioListUrl + abcUrl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
items.forEach( function(item) {
//some function
});
},
error: function (data) { alert("ERROR: " + data);
console.log(sharepointScenarioListUrl +
abcUrl);console.log(data);
}
} );
}
我有两个 AJAX 请求,我想根据用户是否为管理员更改第二个 AJAX 的 URL。如果用户不是管理员,将在 AJAX 调用中使用不同的 URL。我收到一条错误消息,指出 URL:abcUrl 未定义。我知道我可能会因为提出这样的问题而被否决,但我真的需要更新第二个 ajax URL,这对我来说将是一次学习经历,因为我是新手 AJAX .非常感谢任何帮助。
var url;
$.ajax( {
url: sharepointBaseUrl + "_api/web/currentUser/groups?$select=title",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
for (var i = 0, len = items.length; i < len; i++) {
if (items[i].Title == adminGroupName) {
self.currentUserIsAdmin(true);
abcUrl="Some Url1";
}
else{
abcUrl="Some Url2";
}
}
},
error: function (data) { alert("ERROR: " + data) }
} );
$.ajax( {
url: sharepointScenarioListUrl + abcUrl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
items.forEach( function(item) {
//some function
});
},
error: function (data) { alert("ERROR: " + data);
console.log(sharepointScenarioListUrl +
abcUrl);console.log(data);
}
} );
我认为 abcUrl 未定义,因为第二个 AJAX 调用发生在第一个 returns 之前;由于 abcUrl 从未在您的代码中初始化,因此它是未定义的。如果你想确保第二个 AJAX 调用仅在第一个 returns 之后发生,你可以将第二个 ajax 调用放在第一个 AJAX 请求的成功回调中.
您可以使用 jquery when
或 deferred
方法。
伪将是这样的:
//get URL for account type
getAccountURL()
//when done return URL
.done(function(url){
//get sharepoint URL
getSharePointURL(url)
};
一个简单的更改即可解决此问题:
function firstCall()
{
var url;
var abcUrl;
$.ajax( {
url: sharepointBaseUrl + "_api/web/currentUser/groups?$select=title",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
for (var i = 0, len = items.length; i < len; i++) {
if (items[i].Title == adminGroupName) {
self.currentUserIsAdmin(true);
abcUrl="Some Url1";
}
else{
abcUrl="Some Url2";
}
}
secondCall(abcUrl);
},
error: function (data) { alert("ERROR: " + data) }
} );
}
function secondCall(abcUrl)
{
$.ajax( {
url: sharepointScenarioListUrl + abcUrl,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
var items = data.d.results;
items.forEach( function(item) {
//some function
});
},
error: function (data) { alert("ERROR: " + data);
console.log(sharepointScenarioListUrl +
abcUrl);console.log(data);
}
} );
}