0

我试图在我制作的一个非常简单的主页上显示一个海龟文件。

<p class="lead" id="testbed-meta"> 
    <script>
    $.ajax({
            cache: false,
            type: "GET",
            async: false,
            url: "/native/api/resources/turtle",
            success: function(data,status){ 
            document.getElementById("testbed-meta").innerHTML = data;       
            },
            error: function(xhl,status){
            document.getElementById("testbed-meta").innerHTML = "Error";
            },
            statusCode:{                
                201: function(){
                alert("Error");
                }
            }
        });

    </script>

HTML 不理解它是乌龟,并使其成为一个没有线刹车的长字符串,并且还删除了一些部分。也许是因为有一些“<”和“>”没有被转义。

有没有一种通过 html 和 javascript 显示 ttl 文件的好方法?

编辑: 顺便说一句,我忘了说我在答案中得到了类似的东西:

@prefix omn-federation: <http://open-multinet.info/ontology/omn-federation#> .

但 HTML 不显示“http:/.....”部分。仅有的:

@prefix omn-federation: .

也许是因为“<”和“>”?!

4

2 回答 2

0

尝试使用pre标签而不是p标签:

<pre class="lead" id="testbed-meta"></pre>

HTML 预格式化文本 ( <pre>) 表示预格式化文本。此元素中的文本通常以不成比例的字体显示,与文件中的布局完全相同。此元素内的空格显示为已键入。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre

<pre class="lead" id="testbed-meta"> </pre>
<script>
$.ajax({
        cache: false,
        type: "GET",
        async: false,
        url: "/native/api/resources/turtle",
        success: function(data,status){ 
             document.getElementById("testbed-meta").innerHTML = data.replace(/<br\s*\/?>/gi, '\n').replace(/</g, '&lt;'); 


        },
        error: function(xhl,status){
        document.getElementById("testbed-meta").innerHTML = "Error";
        },
        statusCode:{                
            201: function(){
            alert("Error");
            }
        }
    });
</script>

看到这个小片段:

data = '<br/> \@prefix omn-federation: <open-multinet.info/ontology/omn-federation#>; . <br/> \@prefix rdf: <w3.org/1999/02/22-rdf-syntax-ns#>; . <br/>'
document.getElementById("testbed-meta").innerHTML = data.replace(/<br\s*\/?>/gi, '\n').replace(/</g, '&lt;'); 
<pre id="testbed-meta"></pre>

于 2015-06-30T13:55:20.997 回答
0

在你的成功回调中试试这个:

$("#testbed-meta").text(data);

jQuery 的text()方法为您转义了所有 HTML。

此外,如果您想在 HTML 中获得新行,则需要将所有新行字符替换为 HTML 的<br>标签:

$("#testbed-meta").text(data).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, "$1<br>$2");
于 2015-07-01T12:20:27.757 回答