繁体   English   中英

将呼叫转移到另一个vf页面不起作用

[英]Remoting call to another vf page not working

我有一个vf页面,在这里我有一个来自被调用控制器的远程方法。 下面是我的JavaScript调用方法`

LeadLocatorPreProcessorControllerV2.openLocatorPage($scope.CustomerSite.AddressID,function(results,event){
console.log(results);
                     window.open(results,"_self");
                    });//Abhinav  `

而我的控制器方法是

`@RemoteAction
    public static PageReference openLocatorPage(String addressId){
        Address__c addr = [SELECT Id, Name, Latitude__c, Longitude__c FROM Address__c WHERE Id = :addressId];
        Decimal latitude = addr.Latitude__c;
        Decimal longitude = addr.Longitude__c;
        String urlLocatorPage = '/apex/LeadLocator?lat='+latitude+'&lon='+longitude;
        PageReference pr = new PageReference(urlLocatorPage);
        return pr;
    }`

现在的问题是,我在控制器中形成的URL是/ apex / LeadLocator / lat = 1234&lon = 1234,但是当我在控制台中登录时,我得到了以下URL / apex / LeadLocator / lat = 1234&amp = lon = 1234。 有人可以帮我解决这个问题,为什么我的URL会更改并附加amp; 本身在javascript结果中。 谢谢

这是因为出于安全原因,例如HTML和脚本注入,cookie窃取和其他Web漏洞,javascript会将从控制器返回的“&”转义为其实体类型(&) 但是由于这种行为,您返回的URL将无法加载,这可能会导致链接失败。

你需要做什么:

var textArea = document.createElement('textarea');
textArea.innerHTML    = results;
$scope.urlToLoad      = textArea.value;
$window.location.href = $scope.urlToLoad;  //window.open(results,"_self");

这将自动将转义的实体转换回普通值,您可以打开url。 而且,这没有任何安全性问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM