【问题标题】:Access plugin controller from js从 js 访问插件控制器
【发布时间】:2012-06-18 11:44:52
【问题描述】:

我想创建一个插件。在我的插件中,我必须从我的函数中调用控制器操作。下面是ajax调用的sn-p,在单独的js文件中。

    $.ajax({
            type:'POST',
            url:"/wf-taglibs/refTagLib/getDescriptionByCode",
            data:{
                'code':code,
                'beanClass':beanClassAttribute
            },

            success:function (data) {
                $('#' + updateFieldAttribute).text(data);
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(xhr.status);
                alert(thrownError);
            }
        });

我的网址有问题。 url:"/wf-taglibs/refTagLib/getDescriptionByCode", 作为响应,我们得到“未找到请求的页面”。

【问题讨论】:

  • 您的控制器入口点在哪里?即:yoursite.com/wf-taglibs/refTagLib/getDescriptionByCode
  • 我试过了,好像不行。
  • 如@MartinBorthiry所说,需要指定服务的完整路径,包括“http:\\”
  • 尝试指定文件类型:/wf-taglibs/refTagLib/getDescriptionByCode(.php)?
  • 抱歉,我的问题是您的控制器的正确网址是什么?

标签: javascript jquery grails plugins


【解决方案1】:

我不会像这样对 URL 进行硬编码,而是在我的 gsp 中声明一个指向正确控制器/动作的 js 变量,然后让我的 js 代码使用该变量。

var getDescriptionEndpoint = "${createLink(controller:'x', action:'x')}";

然后在进行 ajax 调用的 js 代码中使用该变量。 这样它也会考虑反向 url 映射。

虽然这不是一个好主意,但是如果您想将变量直接声明到 js 文件中 - 换句话说 - 如果您想将 js 文件视为 gsp - 请参阅 gsp-arse 插件

【讨论】:

  • 这将返回字符串并且不适用于单独的 .js 文件。这仅在 .gsp 文件中有效。
  • 是的,你是对的。我会有一个 gsp 文件来保存这种类型的变量声明,然后我会将该 gsp 文件包含在
  • 虽然这不是一个好主意,但如果你想将变量直接声明到 js 文件中 - 换句话说 - 如果你想将 js 文件视为 gsp - 请参阅 gsp-arse 插件
猜你喜欢
  • 2015-01-03
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多