![](/img/trans.png)
[英]Javascript to validate required field entry on a VF page not working
[英]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.