2012-04-27 78 views
2

對於Salesforce來說一般來說我是新手,我試圖決定如何處理調用SOAP Web服務。目前,當用戶點擊商機頁面上的按鈕時,通過AJAX執行web服務。我被要求從按鈕中移動web服務調用,並將其放入自定義控制器頁面。因此,在滿足特定條件時需要無縫調用Web服務,而不是讓用戶單擊按鈕。Salesforce - 通過Apex控制器執行Javascript

我想使用相同的ajax語句啓動webservice,因爲它會節省我的時間。儘管通過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

徹底首先閱讀這些參考文獻:Action FunctionsApex in Ajax,或Visualforce JavaScript Remoting

最簡單的做法是將connection.jsapex.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> 

注意..我沒有測試過任何這一點,但它應該與小的調整工作(我已經使用了類似的方法很多次)。

+0

看着這個答案可能對我有幫助:http://stackoverflow.com/a/7715982/549141 – 2012-04-27 19:11:02

+0

感謝您的答覆。我真的希望有一種方法可以在Apex控制器內執行javascript,而不使用VisualForce。我越想這個控制器版本就越好。我需要無縫地關閉JavaScript,並且我不想在當前進程之間添加一個頁面。無論如何,再次感謝您的建議和信息,我將來肯定能夠使用它。 – user891859 2012-04-30 14:41:48

+1

不客氣。順便說一下,您實際上並不需要在Apex控制器內執行JavaScript來調用Web服務。你可以在Apex中調用'myWS.invokeExternalWs(folderName,objectId);'。我沒有意識到這就是你想要做的。 – 2012-04-30 16:40:09