Jquery 网站预览

Jquery 网站预览,jquery,asp.net-mvc,entity-framework,Jquery,Asp.net Mvc,Entity Framework,我正在做一个项目,在这个项目中我有像facebook这样的流式发布, 用户也可以发布任何网站的链接,我想像facebook一样实现它,即当用户发布链接时,它会在文本框下方显示网站预览,我不知道如何才能做到这一点 如何实现这一功能,我正在使用Ajax调用在流上发布 $.ajax({ url: "My Controller ActionResult", type: "POST", data: JSON.s

我正在做一个项目,在这个项目中我有像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);
                }
            });

由于您需要在远程站点上有效地解析HTML(对于头部的元信息之类的内容),因此您需要检索HTML来处理它

虽然jQuery不允许您跨来源(不同的域-请参阅)发送/接收,但除了“填充JSON”(jsonp-)之外,您的服务器代码可以

您可以发出HttpWebRequest(http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx)对于URL,则取决于您是否将HTML发送到要在客户端上解析的JavaScript代码,或者您可以在服务器上解析它,并将结构化对象发送到客户端代码,以便简单地推送到div中

通过解析HTML服务器端,您可以将其缓存到数据库中(以防其他人共享相同的url),或者分析它并记录错误(您不希望您的服务器不断命中返回404的url!)


最终,您可能只想返回一个局部视图(因为您正在使用ASP.NET MVC),但您可以根据内容类型聪明地返回一个专门的视图。例如,Facebook允许你在新闻提要上现场观看YouTube视频,并在线显示图片。如果你共享一个网站,它通常允许你从它在你共享的页面中找到的一组图像中进行选择。

我会在页面中用一个指向正在共享的url的iframe快速完成。这是为了防止您只需要页面预览,而不需要像Facebook那样解析该页面的html来提取元数据