2012-11-27 117 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這樣的元數據。