将AJAX POST的参数传递给Grails控制器
我正在使用Grails建立一个社交网络,并且不得不让用户在其编辑页面内部粘贴youtube-Url到文本字段,然后点击一个按钮,JS粘贴了粘贴的URL中的id,ajaxpost是使用youtubevideo的预览图片更新div
html看起来像:
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]) }
和存储的video看起来:
我只是不知道如何捕获Ajax Post的数据并使用id为里面的预览图像更新div,
有人能暗示一下吗? 它杀了我
你应该发布这样的数据:
jQuery.ajax({ type: 'POST', data: { value: RegExp.$1 }, ...
之后,您可以使用params.value
访问grails控制器内的发布数据。
我在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
解析数据并返回一个可以使用的对象。