我有一个vf页面,我从控制器中调用了一个远程方法。下面是我调用方法`
的javascriptLeadLocatorPreProcessorControllerV2.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结果中自己。 感谢
答案 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");
这会自动将转义的实体转换回正常值,您可以打开网址。此外,这并没有任何安全问题。