簡體   English   中英

通過從Java Servlet檢索一些信息,使用Ajax更新SVG文件

[英]Update SVG file using Ajax, by retrieving some information from a Java Servlet

我已經編寫了一個Java Servlet來檢索SVG圖像。 此Servlet的內容類型為CONTENT_TYPE = "image/svg+xml";

這個特定的servlet被作為內聯框架集成到一個更大的(ADF11g)應用程序中。 如果您習慣了JSP,則代碼應該看起來很熟悉:

    <af:inlineFrame source="servlet?Filename=TestSVG1&amp;width=1024&amp;height=1024"                            
                    inlineStyle="width
                    :#{session.graphSVGWidth}px; height:#{session.graphSVGHeight}px; border: none">
    </af:inlineFrame>

該SVG包含一個動態彈出窗口,該彈出窗口允許用戶通過Ajax調用向服務器發送信息,從而與圖片進行交互。

例如,這是SVG正在使用的JavaScript的一部分:

function loadXMLDocPOST(params) {
    var xmlhttp = getXmlHttp();
    xmlhttp.open("POST", 'servlet', true);

    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            /* Do something here */   
        }
        else {
            //alert('xmlhttp.status_r2=' + xmlhttp.status);
        }
    }
    xmlhttp.send(params);
}

function editAction(Filename, Name){
    loadXMLDocPOST(...)
}

Ajax調用成功,但是問題是,當我從SVG觸發了一些操作之后,我想更新內聯框架中包含的圖片( /* Do something here */

那么,如何從SVG內部重新渲染SVG :)? 問題在於innerHTML在SVG中不起作用。 document.write()也不起作用。 那么您有什么建議嗎?

您可以使用parent.XXX來訪問包含該svg的HTML文檔的全局變量和函數。

這樣,svg可以與其包含的html文檔進行交互。

例如:

parent.document.write() 

在svg中工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM