Javascript “如何修复”;“无限重定向循环”;在Sharepoint中
我是Javascript新手,我正在建立一个多语言Sharepoint。我想有一个代码到每个网页,将检查用户的电子邮件和语言的网址(葡萄牙语或西班牙语),并重定向(或不)到正确的语言网址 这些条件正在发挥作用,但它处于无限循环中 我哪里做错了Javascript “如何修复”;“无限重定向循环”;在Sharepoint中,javascript,jquery,ajax,redirect,sharepoint,Javascript,Jquery,Ajax,Redirect,Sharepoint,我是Javascript新手,我正在建立一个多语言Sharepoint。我想有一个代码到每个网页,将检查用户的电子邮件和语言的网址(葡萄牙语或西班牙语),并重定向(或不)到正确的语言网址 这些条件正在发挥作用,但它处于无限循环中 我哪里做错了 <script src="/SiteAssets/jquery.SPServices-2013.02a.js" type="text/javascript"></script> <script src="/SiteAssets
<script src="/SiteAssets/jquery.SPServices-2013.02a.js" type="text/javascript"></script>
<script src="/SiteAssets/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var sitefrom = window.location.href
var language = sitefrom.search(/portuguese/i); /* IF language = -1, then site from = SPANISH, otherwise site from is PORTUGUESE */
var site_es_pt = sitefrom.replace(/spanish/gi, "portuguese");
var site_pt_es = sitefrom.replace(/portuguese/gi, "spanish");
var userid= _spPageContextInfo.userId;
var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";
var requestHeaders = { "accept" : "application/json;odata=verbose" };
$.ajax({
url : requestUri,
contentType : "application/json;odata=verbose",
headers : requestHeaders,
success : onSuccess,
error : onError
});
function onSuccess(data, request){
var loginName = data.d.Title;
if(loginName == "*@br.XX.com" && language == -1) {alert(loginName);}
if (loginName !== "*@br.XX.com" && language !== -1){alert(sitefrom);}
}
function onError(error) {
alert("error");
}
</script>
var sitefrom=window.location.href
var language=sitefrom.search(/葡萄牙语/i);/*如果language=-1,则site from=西班牙语,否则site from为葡萄牙语*/
var site_es_pt=sitefrom.replace(/西班牙语/gi,“葡萄牙语”);
var site_pt_es=sitefrom.replace(/葡萄牙语/gi,“西班牙语”);
var userid=_spPageContextInfo.userid;
var requestUri=\u spPageContextInfo.webAbsoluteUrl+“/\u api/web/getuserbyid(“+userid+”);
var requestHeaders={“accept”:“application/json;odata=verbose”};
$.ajax({
url:requestUri,
contentType:“application/json;odata=verbose”,
headers:requestHeaders,
成功:一旦成功,
错误:onError
});
成功时的功能(数据、请求){
var loginName=数据d.标题;
如果(loginName==“*@br.XX.com”&&language==-1){alert(loginName);}
如果(loginName!=“*@br.XX.com”&&language!=-1){alert(sitefrom);}
}
函数onError(错误){
警报(“错误”);
}
根据我的经验,上面的脚本不应该导致无限循环,您是如何使用脚本的?尝试通过将脚本编辑器Web部件插入页面并将脚本插入脚本编辑器Web部件来进行测试
我将在加载DOM之前执行自定义脚本
<script type="text/javascript">
$(function () {
var sitefrom = window.location.href
var language = sitefrom.search(/portuguese/i); /* IF language = -1, then site from = SPANISH, otherwise site from is PORTUGUESE */
var site_es_pt = sitefrom.replace(/spanish/gi, "portuguese");
var site_pt_es = sitefrom.replace(/portuguese/gi, "spanish");
var userid = _spPageContextInfo.userId;
var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";
var requestHeaders = { "accept": "application/json;odata=verbose" };
$.ajax({
url: requestUri,
contentType: "application/json;odata=verbose",
headers: requestHeaders,
success: onSuccess,
error: onError
});
})
function onSuccess(data, request) {
var loginName = data.d.Title;
if (loginName == "*@br.XX.com" && language == -1) { alert(loginName); }
if (loginName !== "*@br.XX.com" && language !== -1) { alert(sitefrom); }
}
function onError(error) {
alert("error");
}
</script>
$(函数(){
var sitefrom=window.location.href
var language=sitefrom.search(/葡萄牙语/i);/*如果language=-1,则sitefrom=西班牙语,否则sitefrom为葡萄牙语*/
var site_es_pt=sitefrom.replace(/西班牙语/gi,“葡萄牙语”);
var site_pt_es=sitefrom.replace(/葡萄牙语/gi,“西班牙语”);
var userid=_spPageContextInfo.userid;
var requestUri=\u spPageContextInfo.webAbsoluteUrl+“/\u api/web/getuserbyid(“+userid+”);
var requestHeaders={“accept”:“application/json;odata=verbose”};
$.ajax({
url:requestUri,
contentType:“application/json;odata=verbose”,
headers:requestHeaders,
成功:一旦成功,
错误:onError
});
})
成功时的功能(数据、请求){
var loginName=数据d.标题;
如果(loginName==“*@br.XX.com”&&language==-1){alert(loginName);}
如果(loginName!=“*@br.XX.com”&&language!=-1){alert(sitefrom);}
}
函数onError(错误){
警报(“错误”);
}
由于加载jquery时遇到问题,我找到了一种不同的重定向方法:
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(init,'sp.js');
var currentUser;
function init(){
this.clientContext = new SP.ClientContext.get_current();
this.oWeb = clientContext.get_web();
currentUser = this.oWeb.get_currentUser();
this.clientContext.load(currentUser);
this.clientContext.executeQueryAsync(Function.createDelegate(this,this.onQuerySucceeded), Function.createDelegate(this,this.onQueryFailed));
}
function onQuerySucceeded() {
var loginName = currentUser.get_email();
var user_country = loginName.search(/br.XX/i); /* IF country = -1, then user is SPANISH, otherwise user is PORTUGUESE */
var sitefrom = window.location.href
var language = sitefrom.search(/portuguese/i); /* IF language = -1, then site from = SPANISH, otherwise site from is PORTUGUESE */
var site_es_pt = sitefrom.replace(/spanish/gi, "portuguese");
var site_pt_es = sitefrom.replace(/portuguese/gi, "spanish");
if(user_country !== -1 && language == -1 && loginName !== "xxxxx@br.XX.com") {window.location = site_es_pt;}
if(user_country == -1 && language !== -1 && loginName !== "xxxxx@br.XX.com") {window.location = site_pt_es;}
}
function onQueryFailed(sender, args) {
alert('Request failed. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
}
</script>
ExecuteOrderLayUntilScriptLoaded(init,'sp.js');
无功电流用户;
函数init(){
this.clientContext=new SP.clientContext.get_current();
this.oWeb=clientContext.get_web();
currentUser=this.oWeb.get_currentUser();
this.clientContext.load(currentUser);
this.clientContext.executeQueryAsync(Function.createDelegate(this.onQuerySucceed),Function.createDelegate(this.onQueryFailed));
}
函数onQuerySucceeded(){
var loginName=currentUser.get_email();
var user_country=loginName.search(/br.XX/i);/*如果country=-1,则用户为西班牙语,否则用户为葡萄牙语*/
var sitefrom=window.location.href
var language=sitefrom.search(/葡萄牙语/i);/*如果language=-1,则sitefrom=西班牙语,否则sitefrom为葡萄牙语*/
var site_es_pt=sitefrom.replace(/西班牙语/gi,“葡萄牙语”);
var site_pt_es=sitefrom.replace(/葡萄牙语/gi,“西班牙语”);
如果(用户所在国家/地区!=-1&&language=-1&&loginName!==)xxxxx@br.XX.com“”{window.location=site_es_pt;}
如果(用户\国家==-1&&language!=-1&&loginName!==)xxxxx@br.XX.com“”{window.location=site_pt_es;}
}
函数onQueryFailed(发送方,参数){
警报('请求失败。\n错误:'+args.get_message()+'\n堆栈跟踪:'+args.get_stackTrace());
}
Hi Lee,谢谢您的回复。是的,我正在使用此脚本作为脚本编辑器Web部件。我也试着运行你的代码,但它不起作用。。。。当我为jquery和spservices添加引用时,它开始循环