0

我正在开发一个项目,其中我有像 facebook 这样的 Stream Posting,用户也可以发布任何网站的链接,我想像 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);
                }
            });
4

2 回答 2

0

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

于 2012-11-28T07:44:18.953 回答
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!)。

最终,您可能只想返回一个 Partial View(当您使用 ASP.NET MVC 时),但您可以很聪明并根据内容类型返回一个专门的 View。例如,Facebook 让您可以在 News Feed 上原位观看 YouTube 视频,也可以在线显示图片。如果您共享一个网站,它通常允许您从它在您共享的页面中找到的一系列图像中进行选择。

于 2012-11-27T12:24:13.500 回答