Инструментарий AJAX - проблема с выполнением веб-сервиса - PullRequest
3 голосов
/ 25 сентября 2010

Мне трудно понять, что здесь происходит.Я пытаюсь закодировать некоторый JavaScript onClick для кнопки в представлении списка Force.com для пользовательского объекта.Вот JS.

{!REQUIRESCRIPT("/soap/ajax/15.0/apex.js")}
{!REQUIRESCRIPT("/soap/ajax/15.0/connection.js")}


var myURL = sforce.apex.execute("MyWebServices", "myUrl", {});

и вот веб-служба, которую я пытаюсь вызвать.

global class MyWebServices {

    webservice static String myUrl(){
    return 'www.foo.com';
    }

}

Когда я нажимаю кнопку, я получаю небольшое всплывающее окно с предупреждением:

"Обнаружена проблема с OnClick JavaScript для этой кнопки или ссылки: невозможно вызвать метод 'execute' of undefined" Когда я выполняю итерацию членов "sforce", "apex" отсутствует.

Я буквально использую тот же синтаксис в другой кнопке в той же организации, единственное отличие заключается в методах, которые я вызываю.Эта кнопка работает.На самом деле, если я скопирую код из проблемного скрипта и поставлю его в начале рабочего скрипта на другой кнопке, это сработает.Чего мне здесь не хватает?

Вот более подробная информация о двух кнопках этого вопроса: одна кнопка (работает) - это кнопка просмотра списка в учетной записи, другая (неработающая) - в пользовательском объектекнопка списка для Foo__c.

Я использую этот код для обоих:

 {!REQUIRESCRIPT("/soap/ajax/10.0/apex.js")}
 {!REQUIRESCRIPT("/soap/ajax/10.0/connection.js")}
 alert( sforce.apex.execute("HammockWebServices", "crossCoverageUrl", {}));

на учетной записи он работает отлично, на Foo__c - нет.Я попытался изменить порядок операторов! REQUIRE ... без видимого эффекта.

Помимо метки и названия кнопок, они, кажется, определены одинаково: Список кнопок Отображение флажков Выполнить JavaScript OnClickJavaScript

Существуют ли разрешения, профили или правила общего доступа на уровне объектов, которые влияют на доступ к пакетам javascript?(Обратите внимание, что даже если бы это было так, я пытаюсь сделать это как системный администратор, и ничего не получаю ...)

Ответы [ 3 ]

0 голосов
/ 30 сентября 2010

Я думаю, что файл connection.js должен быть загружен до apex.js, попробуйте изменить порядок.

Редактировать: из apex.js

if (!sforce) {
    throw "unable to find sforce. Make sure that connection.js is loaded before apex.js script";
}

Но поскольку изменение порядка сценариев, похоже, не оказало никакого влияния, возможно, проблема в версиях API? Я вижу, вы используете версию 10, которая довольно старая, ваш класс Apex также использует ту же версию? Попробуйте изменить версии, чтобы увидеть, что работает.

0 голосов
/ 09 февраля 2012

перед «вершиной» должна быть ссылка на «соединение». Он устанавливает основной объект Sforce.

0 голосов
/ 28 сентября 2010

Использует ли ваша организация пространства имен?Если это так, то синтаксис вызова функции слегка меняется с:

var myURL = sforce.apex.execute("MyWebServices", "myUrl", {});

на:

var myURL = sforce.apex.execute("MyNamespace.MyWebServices", "myUrl", {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...