2012-04-27 3 views
2

Im новое для Salesforce вообще и Im пытается решить, как обращаться с вызовом веб-службы SOAP. В настоящее время веб-сервис выполняется через AJAX, когда пользователь нажимает кнопку на странице «Возможности». Меня попросили переместить вызов webservice из кнопки и поместить его в страницу пользовательского контроллера. Таким образом, веб-сервисы должны выполняться без проблем, когда выполняются определенные условия, против того, чтобы пользователь нажал кнопку.Salesforce - Выполнение Javascript через Apex Controller

Я хотел бы просто запустить веб-сервис, используя тот же оператор ajax, потому что он сэкономит мне время. Хотя кажется, что имеет смысл использовать вебсервис через Apex, но я все еще исследую эту тему. Итак, вот мой вопрос:

Возможно ли выполнить следующий javascript из контроллера Apex? Если да, то как?

{!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 Functions, Apex in Ajax или Visualforce JavaScript Remoting.

Самый простой способ сделать то, что вы просите, - это добавить файлы 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> 

Примечание .. Я не тестировал все это, но он должен работать с небольшими ухищрениями (я использовал подобный подход во много раз).

+0

Глядя на этот ответ, я также могу помочь: http://stackoverflow.com/a/7715982/549141 –

+0

Спасибо за ответ. Я действительно надеялся, что есть способ выполнить javascript внутри контроллера Apex без использования VisualForce. Чем больше я думаю об этом, тем лучше смысл версии контроллера. Мне нужно, чтобы javascript запускался без проблем, и я не хочу добавлять страницу между текущим процессом. Во всяком случае, еще раз спасибо за советы и информацию, я обязательно смогу использовать это в будущем. – user891859

+1

Добро пожаловать. Кстати, на самом деле вам не нужно выполнять JavaScript внутри контроллера Apex для вызова веб-службы. Вы можете просто вызвать 'myWS.invokeExternalWs (folderName, objectId);' в Apex. Я не понимал, что вы пытаетесь это сделать. –

Смежные вопросы