Javascript AJAX工具包——webservice执行问题
我很难理解这里发生了什么。我试图为Force.com列表视图上的自定义对象按钮编写一些onClick javascript。 这是JSJavascript AJAX工具包——webservice执行问题,javascript,ajax,salesforce,Javascript,Ajax,Salesforce,我很难理解这里发生了什么。我试图为Force.com列表视图上的自定义对象按钮编写一些onClick javascript。 这是JS {!REQUIRESCRIPT("/soap/ajax/15.0/apex.js")} {!REQUIRESCRIPT("/soap/ajax/15.0/connection.js")} var myURL = sforce.apex.execute("MyWebServices", "myUrl", {}); 这是我正在尝试调用的Web服务 global
{!REQUIRESCRIPT("/soap/ajax/15.0/apex.js")}
{!REQUIRESCRIPT("/soap/ajax/15.0/connection.js")}
var myURL = sforce.apex.execute("MyWebServices", "myUrl", {});
这是我正在尝试调用的Web服务
global class MyWebServices {
webservice static String myUrl(){
return 'www.foo.com';
}
}
当我点击按钮时,我会看到一个小提示弹出窗口,上面写着:
“此按钮或链接的OnClick JavaScript遇到问题:
无法调用未定义“”的方法“execute”
当我迭代“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_____________________________。我已经试着改变了游戏的顺序!要求没有明显效果的陈述
除了按钮的标签和名称外,它们的定义似乎是相同的:
列表按钮
显示复选框
执行JavaScript
OnClickJavaScript
是否存在影响可以访问哪些javascript包的对象级权限、配置文件或共享规则?(注意,即使是这种情况,我还是以系统管理员的身份尝试了一下,但一无所获……)您的组织是否使用名称空间?如果是这样,则调用函数的语法会略有变化,如下所示:
var myURL = sforce.apex.execute("MyWebServices", "myUrl", {});
致:
我认为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类也使用相同的版本吗?尝试更改版本以查看效果。必须在“顶点”之前引用“连接”。它设置核心sforce对象。无名称空间。另外,如果问题出在apex webservice方法的名称空间上,我会有点惊讶(虽然不是很深..我是salesforce),它会告诉我“apex”是未定义的。将其切换为无效。此外,在另一个有效的按钮中,或者如果我将此代码移动到另一个按钮,它将按发布顺序工作,当我尝试先加载apex.js时,会出现一个javascript错误。然而,这可能取决于自定义按钮所在的页面-哪个SF页面工作,哪个不工作?另一个有趣的想法,但遗憾的是,没有,我更新到了最新的页面,它没有效果。另外,考虑到另一个按钮适用于任一API版本,它可能与此无关。不过,我很欣赏这些建议。这个答案已经提出了。在这种情况下,最好的办法是,一旦你投票选出你认为可以解决问题的答案,而不是阅读这个答案。嗯,你应该使用visualforce来解决这个问题。它将为您省去很多麻烦,而不用处理ajax工具包,这是salesforce构建的工具的第一次迭代,而且使用起来更难。
if (!sforce) {
throw "unable to find sforce. Make sure that connection.js is loaded before apex.js script";
}