Salesforce - 通过 Apex Controller 执行 Javascript

Salesforce - Executing Javascript through Apex Controller

本文关键字:执行 Javascript Controller Apex 通过 Salesforce      更新时间:2023-09-26

我是Salesforce的新手,我试图决定如何处理SOAP网络服务的调用。目前,当用户单击"业务机会"页面上的按钮时,Web 服务正在通过 AJAX 执行。我被要求将 Web 服务调用从按钮中移出并将其放入自定义控制器页面中。因此,当满足某些条件时,需要无缝调用 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);

首先仔细阅读以下参考文档:Action Functions、Ajax 中的 Apex 或 Visualforce 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 放入 <page> 标签下的 <script> 标签中的函数中。

<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>

注意。。我还没有测试过任何这些,但它应该可以进行细微的调整(我已经多次使用类似的方法)。