使用ISBN

时间:2016-12-09 19:41:37

标签: javascript intellij-idea thymeleaf saxparser isbn

我正在使用百里香,而我正在使用一个获取ISBN号并获取图书数据的函数。我在在线编辑器中尝试了代码并且它工作正常,但是当我在Intellij中使用相同的代码时

org.xml.sax.SAXParseException:实体名称必须紧跟'&'在实体参考中。     at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)〜[na:1.8.0_101]     在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)〜[na:1.8.0_101]     at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)〜[na:1.8.0_101]     在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)〜[na:1.8.0_101]

这是我的代码 HTML

<div class="input-field col s6 m6">
        <input id="isbn" name="isbn" type="text" class="validate" />
        <label for = "isbn">Enter ISBN Code</label>
</div>
    <div class="input-field col s6 m6">
        <button id="submitCode" class="btn waves-effect waves-light col m4" onclick="myFunction()" value="data">ISBN Data</button>
    </div>

JavaScript代码

function myFunction()
{
    var isbn = document.getElementById('isbn').value;
    alert(isbn);
    var xmlhttp = new XMLHttpRequest();
    var url = "https://www.googleapis.com/books/v1/volumes?q=isbn:"+isbn;
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            var x = JSON.parse(xmlhttp.responseText);
            callback(x);
        }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}
function callback(x)
{
    //do things with your data here
    alert(JSON.stringify(x));
    console.log(x);
}

1 个答案:

答案 0 :(得分:0)

Thymeleaf需要有效的XML,并且在您的javascript中有:

if (xmlhttp.readyState == 4 && xmlhttp.status == 200)

&amp;不是一个有效的XML字符,所以你需要像这样用CDATA包围你的javascript:

<script>
// <![CDATA[

... javascript here ...    

// ]]>
</script>

或者用&amp;&amp;

替换它们