【问题标题】:Salesforce - Executing Javascript through Apex ControllerSalesforce - 通过 Apex 控制器执行 Javascript
【发布时间】:2012-04-27 16:18:59
【问题描述】:

一般来说,我是 Salesforce 的新手,我正在尝试决定如何处理 SOAP Web 服务的调用。当前,当用户单击“机会”页面上的按钮时,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);

【问题讨论】:

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


    【解决方案1】:

    首先仔细阅读这些参考文档: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 放入 &lt;script&gt; 标记中 &lt;page&gt; 标记下的函数中。

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

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

    【讨论】:

    • 看看这个答案可能对我也有帮助:stackoverflow.com/a/7715982/549141
    • 感谢您的回复。我真的希望有一种方法可以在 Apex 控制器中执行 javascript,而无需使用 VisualForce。我对此想得越多,控制器版本的意义就越大。我需要无缝触发 javascript,并且我不想在当前进程之间添加页面。无论如何,再次感谢您的建议和信息,我将来一定可以使用它。
    • 不客气。顺便说一句,您实际上不需要在 Apex 控制器中执行 JavaScript 来调用 Web 服务。您可以在 Apex 中致电 myWS.invokeExternalWs(folderName,objectId);。我没有意识到这就是你想要做的。
    • 没错,这就是我现在正在使用的。在 Apex 的泥泞中跋涉(当然是为我自己说话)。 :) 再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多