5

我正在用 Grails 构建一个社交网络,并坚持让用户在他们的 editprofile 页面内有机会将一个 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" width="225px" height="130px"/></span></div>

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

有人可以给个提示吗?它正在杀死我

4

2 回答 2

4

您应该像这样发布数据:

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

之后,您可以使用params.value.

于 2012-12-16T21:05:10.427 回答
3

我在 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() ...
      }
});

在圣杯中......

def service(){   
  def jsonObj = request.JSON
}

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

于 2013-12-31T05:33:43.093 回答