2012-11-27 120 views
0

我正在一个项目中,我有像Facebook一样的流发布, 用户也可以发布任何网站的链接,我想实现它像Facebook一样,即当用户发布链接时,它会显示文本框下面的网站预览,我不知道我怎样才能做到这一点 我怎样才能实现这个功能,我使用Ajax调用张贴在流网站预览

$.ajax({ 
       url: "My Controller ActionResult", 
       type: "POST", 
       data: JSON.stringify({ objResourceModel: objResource, objTagList: TagTypeList, sendEmail: $("#chkbxSendEmail")[0].checked, groupId: ResourceVariable.GroupId, isblog: isblog, isquest: isquest }), 
       dataType: "html", 
       contentType: "application/json; charset-utf-8", 
       beforeSend: function() { 
        $("#btnPost").attr("disabled", "disabled"); 
        loading = setTimeout("$('#load').show()", 200); 
       }, 
       complete: function() { 
        clearTimeout(loading); 
        $("#load").hide(); 
        $("#btnPost").removeAttr("disabled"); 
       }, 
       success: function (Result) { 
        if (Result == "false") { 
         alert("Video must be of Youtube or vimeo"); 
        } 
        else { 
         $('#divResourceDetails').html(Result); 
         ClearPostSectionData(); //function call 
         SetUpCommentSectionEvent(); //function call set up events 
         GetLatestAnnouncements(); 
         $('#tagOutput').html(""); 
         outputTagHtml = ''; 
         TagTypeList = []; 
         //GetBrowseByInstructor(); //function call 
         //GetBrowseByTagType(); //function call 
         GetBrowseByResource(); //function call 
         GetBrowseByMonth(); //function call 
        } 
       }, 
       error: function (msg) { 
        alert("Unable to save uploaded post details: " + msg.responseText); 
       } 
      }); 

回答

0

当你需要有效地分析遥控器上的HTML网站(对于像头部元信息这样的东西),你需要检索HTML来处理它。虽然jQuery不会让你发送/接收不同的来源(不同的域 - 见http://en.wikipedia.org/wiki/Same_origin_policy) - 除了“填充JSON”(jsonp - http://en.wikipedia.org/wiki/JSONP) - 你的服务器代码可以!

您可以为URL创建一个HttpWebRequest(http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx),然后由您决定是否发送将HTML传递给您的JavaScript代码以在客户端上解析,或者您可以在服务器上解析它,并将结构化对象发送到客户端代码以简单地推入div。

通过解析HTML服务器端,它使您有机会将其缓存在数据库中(以防其他人共享相同的url),也许分析它并记录错误(您不希望服务器保留击中一个返回404的URL!)。最终,您可能希望简单地返回一个部分视图(因为您使用的是ASP.NET MVC),但您可以很聪明并根据内容类型返回一个专门的视图。例如,Facebook可以让您在新闻Feed中原位观看YouTube视频,并且也可以在线显示图片。如果您共享一个网站,它通常会让您从您分享的网页中找到的一系列图像中进行选择。

0

我会尽快与页面中的iframe指向被共享的网址。这是为了防止你只需要页面预览,而不是解析页面中的HTML来提取像Facebook这样的元数据。