2011-07-26 23 views
0

我做一個jQuery的GET調用基於該數據的jQuery(「數據」)返回的HTML片段中有缺失數據的「數據」

$.get($('.more a').attr('href'), function (data) { 
     var $data = $(data); 
     // other code using $data 
    }); 

這裏,「數據」來獲取一個HTML片段,並做一些處理是

<div class="topDiv"> Data goes here </div> 

但是$的數據顯示爲

<div class="topDiv"> </div> 

只有HTML標記顯示,而裏面的文字是沒有的。 IE有同樣的問題(?)。但是,Firefox正確解析它。

當我警告($(data).html())時,Firefox顯示警告並帶有正確的html,而Chrome和IE使用缺少的文本顯示它。

由於我在本地主機上運行我的項目,我無法提供html片段的URL。我正在使用asp.net ashx處理程序來提供html片段。基本上,當我們向處理程序發佈請求時,它會根據傳遞給它的查詢字符串參數返回一個html片段。

String content = "<html> <head> </head> <body>"+ 
"<div class="topDiv"> Data goes here </div>"+ 
"</body></html>"; 

context.Response.ContentType = "text/html"; 
context.Response.Write(content); 

解決

如答案提到的, 'HTML' 片段不能很好地形成。 Firefox 3似乎接受它,而Firefox 4,Chrome和IE則沒有。

+1

如果提醒($(data).html()),會發生什麼? –

+0

你能告訴我們什麼是URL,以便我們可以驗證它是否會將瀏覽器引導至有效的HTML文檔?併爲了生殖? –

回答

0

我懷疑這是因爲<div>text</div>本身並不是一個真正有效的html文檔。 IIRC,divs只能包含塊級元素。文本應該在p,a等內部。因此,IE和Chrome根據DOM標準查殺文本,Firefox正在讓它飛行。告訴jQuery你得到的數據類型是「text」,然後用html(textData)代替將內容插入你的div。

EG:

$.ajax($('.more a').attr('href'), { 
    dataType: 'text' 
}).done(text) { 
    $('container selector').html(text); 
}); 
0

這是怎麼:

String content = "<html> <head> </head> <body>"+ 
"<div class="topDiv"> Data goes here </div>"+ 
"</body></html>"; 

曾經與轉義引號編譯?如果你解決這個問題,你應該搖擺和滾動。