Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何修复”;“无限重定向循环”;在Sharepoint中_Javascript_Jquery_Ajax_Redirect_Sharepoint - Fatal编程技术网

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

我是Javascript新手,我正在建立一个多语言Sharepoint。我想有一个代码到每个网页,将检查用户的电子邮件和语言的网址(葡萄牙语或西班牙语),并重定向(或不)到正确的语言网址

这些条件正在发挥作用,但它处于无限循环中

我哪里做错了

<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添加引用时,它开始循环