远程调用另一个vf页面无法正常工作

时间:2016-09-19 15:06:48

标签: javascript salesforce

我有一个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&安培; LON = 1234。 有人可以帮助我这个为什么我的网址改变并附加放大器;在javascript结果中自己。 感谢

1 个答案:

答案 0 :(得分:0)

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

您需要做什么:

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

这会自动将转义的实体转换回正常值,您可以打开网址。此外,这并没有任何安全问题。