2010-04-25 46 views
1

我需要使用ajax功能將外部div元素(外部jsp文件)加載到當前頁面中。該JSP頁面包含動態內容 - 例如基於從當前會話收到的值的內容。如何使用ajax和jsp/servlets加載具有動態內容的外部Div?

我以某種方式解決了這個問題,但我懷疑是因爲我認爲我的解決方案不好,或者因爲我不是專家,所以可能有更好的解決方案。

我有三個文件:

  • 點擊一個TR元素時觸發

    JavaScript函數,它從一個servlet請求HTML數據:

    $("#inboxtable tbody tr").click(function(){ 
    
        var trID = $(this).attr('id'); 
        $.post("event?view=read",{id:trID}, function(data){ 
         $("#eventContent").html(data); // load external file 
        },"html"); // type 
    
    }); 
    
  • 該servlet「事件「使用加載數據並生成HTML內容,包括方法:

    String id = request.getParameter("id"); 
    if (id != null) { 
        v.add("Test"); 
        v.add(id); 
        session.setAttribute("readMessageVector", v); 
        request.getRequestDispatcher("readMessage.jsp").include(request, response); 
    } 
    
  • 最後:外部readMessage JSP文件看起來是這樣的:

    <p> 
        Text: ${readMessageVector[0]} 
    </p> 
    <p> 
        ID: ${readMessageVector[1]} 
    </p> 
    

    我的問題

  • 這是解決方案不夠好,來解決這個問題 - 裝載有外部JSP動態內容?

  • 有沒有更好的解決方案?比如將所有DIV元素放在同一個文件中,而不是從外部文件中加載它們,並在同一個文件中使用javascript/jquery顯示或隱藏這些元素?這樣,我只會使用JSON?

回答

1

這個解決方案對我來說似乎很好。如果將來開始進行大量不同的AJAX調用,最好從jsps返回JSON等輕量級響應 - 這將節省帶寬,jQuery可用於生成大量的HTML標記。

+0

謝謝@Finbarr,但是如果我返回JSON,我認爲很難動態構建HTML元素。對吧?那麼在同一個文件中顯示和隱藏DIV元素而不是加載外部div呢? – Abdullah 2010-04-25 20:05:53

+1

動態構建HTML元素非常簡單。通常情況下,使用jQuery,像$('

').insertAfter()或.insertBefore()或.appendTo()或.prependTo(),您可以鏈接方法調用以在div內添加內容被插入。 – Finbarr 2010-04-25 20:10:32

相關問題