【问题标题】:Grails & Ajax-can't succeed pass data through the controllerGrails & Ajax - 无法成功通过控制器传递数据
【发布时间】:2015-11-02 10:13:41
【问题描述】:

我使用 ajax。 在 ajax 中,我在控制器中调用一个动作,然后返回:

render template : 'eventInvited', model : [eventInvitees :userData.get('users'),eventUsersCount:userData.get('userCounts'),
event :event, tab : userData.get('tab'), isFilter : false,user:user,flag: params.flag]

我必须使用 eventInvitees 来更新一些跨度,所以在成功(ajax)中我使用:

$('.inviteeSize').html(data.eventInvitees);

它不会更新这个跨度

【问题讨论】:

  • 您能否再显示一些您的 AJAX 调用的代码以及发生了什么?

标签: ajax grails controller


【解决方案1】:

我想你想要的是

$('.inviteeSize').html(${eventInvitees});

$('.inviteeSize').html(${data.eventInvitees});

还请注意,根据 eventInvitees 的数据类型,以及您希望在 HTML 中显示的内容,可能会更好:

$('.inviteeSize').html("${eventInvitees}");

【讨论】:

    【解决方案2】:

    success 中的 data 参数将是 HTML。您无法通过这种方式访问​​用于在控制器中呈现模板的模型。

    您可能会更好地执行两个 ajax 调用,一个用于呈现模板,另一个用于获取 JSON 对象以及您的活动受邀者和您需要的任何其他数据。

    $.ajax({
        url: "...",
        dataType: "html"
    }).done(function(html){
        $('.inviteeSize').html(html);
    });
    
    $.ajax({
        url: "...",
        dataType: "json"
    }).done(function(json){
        console.log(json);
    });
    

    其他一些方法是

    • 将活动受邀者数据存储在模板中的data attributes 中。然后您可以使用$.data 方法访问它。注:您可以将 JSON 存储在数据属性中。

    • 首先与受邀者一起获取 JSON,然后使用一些数据作为参数请求呈现的模板,这样您就不会两次调用相同的 userData.get()。

    • 获取 JSON 数据,然后使用 Javascript 模板引擎从中呈现 HTML。而不是使用 Grails gsp 模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-24
      • 2019-07-16
      • 1970-01-01
      • 2017-09-29
      • 2023-03-30
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多