将 AJAX POST 的参数传递给 Grails 控制器

Posted

技术标签:

【中文标题】将 AJAX POST 的参数传递给 Grails 控制器【英文标题】:Passing Parameters of AJAX POST to Grails Controller 【发布时间】:2012-12-04 00:47:09 【问题描述】:

我正在使用 Grails 构建社交网络,但遇到了问题 在为用户提供他们的编辑配置文件时 页面有机会将 youtube-Url 粘贴到文本字段中,然后通过单击按钮,JS 将 id 从粘贴的 URL 中正则化,触发 ajax 帖子,使用 youtube 视频的预览图像更新 div

html 看起来像:

                    <g:textField name="videoinput" class="videoinput reLef" value="" />
                    <span class="daten_videouploadbtn reLef" ></span>

        <g:render template="/forms/storedVideos" />

JS 看起来像:

    $('.daten_videouploadbtn').click(function() 

        var string = document.editProfileForm.videoinput.value;
        var neu = string.replace(/http[s]?:\/\/(?:[^\.]+\.)*(?:youtube\.com\/(?:v\/|watch\?(?:.*?\&)?v=|embed\/)|youtu.be\/)([\w\-\_]+)/i, '$1'); 
        var id = RegExp.$1;

        jQuery.ajax(
        type:'POST',
        data:RegExp.$1, 
        url:'$createLink(action: 'addVideo')',
        success:function(data,textStatus)jQuery('#storedvideos').html(data);,
        error:function(XMLHttpRequest,textStatus,errorThrown)
        );
);

控制器看起来像:

def addVideo() 
    def videoitems = !!%%-- HOW TO PARSE YOUTUBE-ID HERE -%%!!
    render(template:"/forms/storedVideos", model: [newVideo:videoitems])

和存储的视频看起来:

    <div id="storedvideos"><span><img src="http://img.youtube.com/vi/$newVideo/default.jpg"  /></span></div>

我只是不明白如何捕获 Ajax Post 的数据并使用内部带有 id 的预览图像更新 div,

谁能给个提示?它杀了我

【问题讨论】:

【参考方案1】:

你应该像这样发布数据:

jQuery.ajax(
  type: 'POST',
  data:  value: RegExp.$1 ,
  ...

之后,您可以使用 params.value 访问 grails 控制器中发布的数据。

【讨论】:

【参考方案2】:

我在 Grails 2.0.4 上完成了这项工作:

Javascript/Ajax

var data = 
   requestId: 12456,
    node: "node1",
    host: "mynode.com";


    $.ajax(            
      url: '/myurl',
      data: JSON.stringify(data),
      type: 'post',
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      success: function() ...
      ,
      error: function() ...
      
);

在 Grails 中......

def service()   
  def jsonObj = request.JSON

我喜欢这种方法,因为request.JSON 会解析数据并返回一个可以使用的对象。

【讨论】:

以上是关于将 AJAX POST 的参数传递给 Grails 控制器的主要内容,如果未能解决你的问题,请参考以下文章

将额外参数传递给jquery ajax promise回调[重复]

将i18n消息作为参数传递给Grails模板

如何将 POST 参数传递给 Durable Function,然后将此参数传递给 Timer Triggered 函数

将 Id 参数传递给 ajax 函数

使用ajax将参数传递给Controller

将参数传递给 jQuery 的 select2 ajax 调用