2010-10-21 36 views
1

我有一些問題。jQuery如何從html中獲取正文內容

我有一個ajax請求發送出去做數據庫更新。然後返回響應,看起來像:

... 
... 
</head> 
<body class="contentpane"> 
{"id":"27","votes":14,"sum":45,"avg":"3.2"} 
</body> 
</html> 

我怎樣才能得到身體級「的contentPane」的內容,然後將其轉換爲一個JSON對象?

我的要求的功能是這樣的:

jQuery.post("index.php?option=com_ttvideo&task=savevote&tmpl=component", {rate: value, id: <?php echo $this->video->id; ?> }, function(html) 
    { 
    // get contents of "contentpane" from response html 
    // convert to JSON object e.g. 
    // var rating = jQuery.parseJSON(content_of_body);  
    // is the above JSON parse correct?  

    // Select stars to match "Average" value 
    ui.select(Math.round(rating.avg)); 

    // Update other text controls... 
    jQuery("#avg").text(rating.avg); 
    jQuery("#votes").text(rating.votes); 

    // Show Stars 
    jQuery("#loader").hide(); 
    jQuery("#rat").show(); 

    }); 

回答

1

像這樣:

$.parseJSON($('body', html).text()) 

我猜想,也許是不正確的,該JSON將HTML轉義。如果不是,您有時可以撥打.html()而不是.text(),但更可能需要編寫自己的解析器。

您應該用真正的JSON響應替換您的webservice。

+0

這是我在的Joomla發展的組成部分,以保持的Joomla框架,它需要運行通過組件MVC框架的響應中的PHP函數 - 退的這它是返回所有的HTML以及,嘖嘖:( – Martin 2010-10-21 15:17:31

+0

我試圖通過這一步一次,1.使用var rating = jQuery(「body」,html ).text();但是這個返回空白,用.html()替換爲null。 – Martin 2010-10-21 15:24:04

+0

@Martin:我無法想象有沒有辦法解決這個問題,但我不知道Joomla。這裏。 – SLaks 2010-10-21 15:24:39

4

很容易。包裹內體通過DIV會做:

$.get(url, {}, function(data){ 
    var data = data.replace('<body', '<body><div id="body"').replace('</body>','</div></body>'); 
    var body = $(data).filter('#body'); 
    (... do what you want with body ...) 
});