Как использовать междоменный извлеченный XML-документ в JavaScript? - PullRequest
0 голосов
/ 10 октября 2019

Итак, я разрабатываю веб-приложение, которое должно взаимодействовать с другой системой в другом домене. Это сообщение должно быть асинхронным. И возвращает XML-документ по завершении. Проблема, однако, в том, что я не могу сделать междоменный с XMLHttpRequest, и я не могу извлечь данные с помощью fetch. В настоящее время самое большое, что я получил, это выборка, когда я получаю данные обратно, но я не могу извлечь их из ответа.

Код запроса:

const HOST = "http://192.168.1.202:6363/"

function setobjval(name, value) {
    fetch(HOST + 'setobjval?objid=' + name + '&objval=' + value, {
        method: 'get',
        mode: 'no-cors'
    }).then(response => {
        //I'm guessing the problem is here
        console.log(response)
        var xml = response.text()
        console.log(xml)
        //do stuff with the what is supposed to be xml
    })
}

И консоль:

interface.js:14 Promise {<pending>}
interface.js:9 Response {type: "opaque", url: "", redirected: false, status: 0, ok: false, …}
interface.js:10 Promise {<resolved>: ""}

Итак, теперь я пишу это, я вижу 2 проблемы: 1. Тот факт, что я не могу извлечь данные из ответа. 2. Выборка завершается после операторов, которые находятся под ним.

Хорошо, поэтому, используя скрипту @ChrisG https://jsfiddle.net/khrismuc/4gvraL9d/ Я получил ошибку в консоли.

<html>​
    <body>​
        <parsererror style=​"display:​ block;​ white-space:​ pre;​ border:​ 2px solid #c77;​ padding:​ 0 1em 0 1em;​
            margin:​ 1em;​ background-color:​ #fdd;​ color:​ black">​
            <h3>​This page contains the following errors:​</h3>​
            <div style=​"font-family:​monospace;​font-size:​12px">
                ​error on line 1 at column 1: Extra content at the end of the document
            </div>​
            <h3>​Below is a rendering of the page up to the first error.​</h3>​
        </parsererror>​
    </body>​
</html>​

А что касается данных, которые я ожидаю.

<response>
    <result>OK</result>
    <objid>long.object.id</objid>
    <req>setobjval</req>
</response>
...