将 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回调[重复]
如何将 POST 参数传递给 Durable Function,然后将此参数传递给 Timer Triggered 函数