Salesforce - 通过Apex控制器执行Javascript

时间:2012-04-27 16:19:00

标签: javascript web-services wsdl salesforce apex-code

我是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);

1 个答案:

答案 0 :(得分:4)

首先请仔细阅读这些参考文档:Action FunctionsApex in AjaxVisualforce JavaScript Remoting

最简单的方法是使用<apex:includeScript>标记(如下所示)在页面上添加connection.jsapex.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>

注意..我没有测试任何这个,但它应该适用于小调整(我多次使用类似的方法)。