Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX工具包——webservice执行问题_Javascript_Ajax_Salesforce - Fatal编程技术网

Javascript AJAX工具包——webservice执行问题

Javascript 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

我很难理解这里发生了什么。我试图为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 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";
}