0
<script type="text/javascript>
(function($, win) {
function mySettingsInitJS () {  

    var self = this;
    var opts = {
        'params' : "userId=" + userId;
    }; 
    self.init = function() {
        self.initUnlinkAction();
    };
    self.initbtnAction = function() {
        $('#Btn').click(self.btnAction);
    };

    self.btnAction = function(e) {
        if(e) { e.preventDefault(); }
        jQuery.post(
        'http://abc/rest/PostRequest', 
        opts.params, function(data) {
        alert('This worked!');
        }, "json");                         
    };

}
function win.MyFilesSettingsInitJS = new MyFilesSettingsInitJS();
}(jQuery, window));
</script>

我在速度模板页面中有这个脚本,其中还有一个 Btn。这基本上是一个花哨的链接。我也确信服务器端的其余 API 工作正常。但不知何故我的java脚本函数没有被调用。有人可以帮我吗?

4

3 回答 3

0

好像您在这里忘记了引号:

'http://abc/rest/PostRequest'

通过良好的语法突出显示,它变得非常明显。另外,如果您使用JSLint或类似工具,它会发现大多数问题,以及调试代码时的控制台。

于 2012-12-26T04:13:54.277 回答
0

您的 URL 值需要是一个字符串...为其添加引号

于 2012-12-26T04:14:05.147 回答
0

您应该使用浏览器中可用的一些开发人员工具。大多数浏览器至少有一个错误控制台,可以显示任何 JS 错误。例如,这段代码有几个语法错误:

  1. 在定义对象文字(也称为映射或字典)时,var opts = { 'params' : "userId=" + userId; };以结束行是非法的。;
  2. 再次在这一行,在哪里userId定义?拥有全局变量是一种不好的做法,因此如果userId是在另一个脚本中定义的全局变量,则应重构代码
  3. function win.MyFilesSettingsInitJS = new MyFilesSettingsInitJS();是非法的,因为您要向对象添加属性,所以您没有声明函数或变量。只需使用win.MyFilesSettingsInitJS = new MyFilesSettingsInitJS();
  4. 实际上,这也可能是错误的,因为您在上面定义了mySettingsInitJS,而不是MyFilesSettingsInitJS(但该函数实际上可以在其他地方定义,我没有完整的代码)
于 2012-12-27T14:16:59.290 回答