2012-04-03 72 views
3

我想對服務器進行ajax調用。我需要抓取頁面的HTML說foo.aspx: Foo.aspx HTML:從json格式的aspx頁面獲得響應而不是普通的html

<form> 
<div>foo</div> 
</form> 

我打電話此頁面遠程頁面,如:

  $.ajax({ 
      url: '/foo.aspx', 
      data: {}, 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (response) { 

      } 
     }); 

我需要這個頁面的HTML但我的要求是,該頁面的響應應該是JSON格式。即。

{"myresponse": { 
    "id": "123", 
    "html":<HTML of foo.aspx>, 

}} 

我需要html作爲json屬性,因爲我需要從foo.aspx代碼後面設置其他屬性? 如何從json格式的aspx頁面獲取響應而不是純html? 從服務器獲取JSON格式的遠程頁面+其他屬性的HTML也有哪些方法?我應該去HTTPHandlers?如果是的話,我怎樣才能得到HTTPHandler中的foo.aspx的html?

+0

那麼問題在哪裏呢?你有沒有嘗試過你剛剛說的話?它應該像一個魅力 – 2012-04-03 12:36:26

+1

你可以使用[WebMethod] ...請檢查http://stackoverflow.com/questions/348689/jquery-ajax-with-asp-net-webmethod-returning-entire-頁面 – Flowerking 2012-04-03 12:37:52

+0

如何在該方法中獲取我的foo.aspx頁面的HTML? – 2012-04-03 12:50:37

回答

2

你可能想嘗試重寫頁面的渲染方法:

protected override void Render(HtmlTextWriter writer) 
    { 
     var sw = new System.IO.StringWriter(); 
     var tw = new HtmlTextWriter(sw); 
     base.Render(tw); 

     Response.Write(String.Format("{{\"myresponse\": {{ \"id": \"123",\"html\":\"{0}\"}}}}" 
     , Server.HtmlEncode(sw.ToString()).Replace("\n"," ")); 
     Response.Flush(); 
     Response.End(); 
    } 

對不起任何語法錯誤,並回車的基本處理。 我想在page_load期間緩衝輸出會更好(Response.BufferOutput = true)

0

如果您需要HTML,請將數據類型更改爲html。成功事件然後將返回HTML作爲響應。

喜歡的東西:

$.ajax({ 
    url: '/foo.aspx', 
    dataType: 'html', 
    success: function (data, textStatus, jqXHR) { 
      alert(data); //data is html. 
    } 
});​ 
0

基本上你必須創建一個包裝Foo.aspx輸出到您的JSON evenlope一個HttpHandler。說,JS調用將是url'/MyWebHandler?page=foo.aspx'而不是僅僅是/foo.aspx。在處理程序中,您只需要查詢頁面並轉儲其輸出。

0

我改變了jbl的重寫Render方法的例子,這對我來說非常合適。我不需要HTML編碼,只需要應用一些格式幷包含內容類型

  protected override void Render(HtmlTextWriter writer) 
      { 
       var sw = new System.IO.StringWriter(); 
       var tw = new HtmlTextWriter(sw); 
       base.Render(tw); 

       var html = sw.ToString();    
       html = html.Replace("\n", " "); 
       html = html.Replace("\r", " "); 
       html = html.Replace("\t", " "); 
       var data = html.Replace("\"", "\\\""); 
       data = data.Replace("/", "\\/"); 
       var json = String.Format("{{\"html\":\"{0}\"}}", data); 

       Response.ContentType = "application/json"; 
       Response.Write(json); 
       Response.Flush(); 
       Response.End(); 
      } 
相關問題