我是Salesforce的新手,我试图决定如何处理SOAP Web服务的调用。目前,当用户单击“商机”页面上的按钮时,将通过AJAX执行Web服务。我被要求从按钮移动webservice调用并将其放入自定义控制器页面。因此,当满足某些条件时,需要无缝地调用Web服务,而不是让用户单击按钮。
我想使用相同的ajax语句启动Web服务,因为它可以节省我的时间。虽然通过Apex调用Web服务似乎更有意义,但我仍在研究该主题。所以这是我的问题:
是否可以在Apex控制器中执行以下javascript?如果是这样的话?
{!REQUIRESCRIPT("/soap/ajax/24.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/24.0/apex.js")}
var xfolder = "MyNewFolder"
var parentid = "999999999999999"
var myvar = sforce.apex.execute("myWS","invokeExternalWs", {folderName:xfolder,ObjectID:parentid});
window.alert('Folder created: ' + myvar);
答案 0 :(得分:4)
首先请仔细阅读这些参考文档:Action Functions,Apex in Ajax或Visualforce JavaScript Remoting。
最简单的方法是使用<apex:includeScript>
标记(如下所示)在页面上添加connection.js
和apex.js
个文件。
<apex:includeScript value="/soap/ajax/24.0/connection.js"/>
<apex:includeScript value="/soap/ajax/24.0/apex.js"/>
然后,将JavaScript放在<script>
标记下的<page>
标记中的函数中。
<script>
function invokeWebService()
{
var xfolder = "MyNewFolder"
var parentid = "999999999999999"
var myvar = sforce.apex.execute("myWS","invokeExternalWs", {folderName:xfolder,ObjectID:parentid});
window.alert('Folder created: ' + myvar);
}
</script>
最后,使用输入按钮上的onclick
属性调用您的函数。
<button type="button" onclick="invokeWebService();" style="btn">Invoke</button>
注意..我没有测试任何这个,但它应该适用于小调整(我多次使用类似的方法)。