2

一般的にSalesforceは初めてで、SOAPWebサービスの呼び出しを処理する方法を決定しようとしています。現在、ユーザーが[オポチュニティ]ページのボタンをクリックすると、AJAXを介してWebサービスが実行されます。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);
4

1 に答える 1

4

最初に、アクション関数AjaxのApex、またはVisualforceJavaScriptRemotingのリファレンスドキュメントをよくお読みください。

あなたが求めていることを行う最も簡単な方法は、タグを使用してページconnection.jsにファイルを含めることです(以下のように)。apex.js<apex:includeScript>

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

注..これはテストしていませんが、微調整で機能するはずです(同様のアプローチを何度も使用しました)。

于 2012-04-27T19:05:44.540 に答える