0

私はFacebookのようなストリーム投稿を持っているプロジェクトに取り組んでいます。ユーザーは任意のWebサイトのリンクを投稿することもできます。Facebookのように実装したいです。つまり、ユーザーがリンクを投稿すると、テキストボックスの下にWebサイトのプレビューが表示されます。どうすればこれを達成できるのかわかりませんこの機能をどのように達成できますか、ストリームに投稿するために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

リモート サイトの HTML を効果的に解析する必要があるため (head 内のメタ情報など)、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 を自分の Web サイトに送信するかどうかはユーザー次第です。クライアントで解析する JavaScript コード、またはサーバーで解析し、構造化されたオブジェクトをクライアント側のコードに送信して、単に div にプッシュすることができます。

HTMLサーバー側を解析することにより、データベースにキャッシュする機会が得られます(他の誰かが同じURLを共有している場合)、おそらくそれを分析してエラーを記録します(サーバーがURLにアクセスし続けたくない場合) 404 を返します!)。

最終的には、(ASP.NET MVC を使用しているため) 単純に部分ビューを返したいと思うかもしれませんが、巧妙にコンテンツ タイプに応じて特殊なビューを返すこともできます。たとえば、Facebook ではニュース フィードで YouTube の動画をその場で見ることができ、写真もインラインで表示されます。Web サイトを共有すると、多くの場合、共有したページで見つかった画像を選択できます。

于 2012-11-27T12:24:13.500 に答える
0

共有されている URL を指すページの iframe を使用してすばやく実行します。これは、ページのプレビューだけが必要で、そのページから HTML を解析して Facebook のようにメタデータを抽出する必要がない場合です。

于 2012-11-28T07:44:18.953 に答える