Как я могу разобрать текст ответа HTML XMLHttpRequest с помощью JS? - PullRequest
0 голосов
/ 21 июня 2019

вот мой код:

const http = new XMLHttpRequest();
const url  = 'http://page/';

http.open('get', url, false);
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

http.onreadystatechange = function ()
{
  if(http.readyState === 4)
  {
    if(http.status === 200 || http.status == 0)
    {
        let str = (http.responseText);
        results = document.getElementById('test').value;
        alert(results)
    }
  }
}

http.send();

как я могу отсортировать str в html, чтобы я мог получить значение, используя document.getElementById?

я пробовал

var doc = document.implementation.createHTMLDocument("example");

doc.documentElement.innerHTML = http2.responseText; 

let test1 = doc.body.querySelector("#test").value;

это сработало, но оно дает мне пустое значение, и когда я посмотрел на предварительный просмотр ответа, я обнаружил, что строка значения пуста, и параметры похожи на заводские настройки по умолчанию.и когда я посмотрел в HTML-код страницы нашел значение в этой строке

<script language=javascript>Transfer_meaning('test','\12345678');</script>

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

@ Мина Нагех, как выглядит http.responseText? пожалуйста, сделайте это:

http.onreadystatechange = function ()
{
  if (http.readyState === 4)
  {
    if (http.status === 200 || http.status == 0)
    {
      let str = (http.responseText);
      console.log( 'str length = ', str.length )

      let QuotesElements = http.responseText.match(/['"](.*?)['"]/g)
      console.log ( QuotesElements ) 

      /*---
      results = document.getElementById('test').value;
      console.log(results)
      ---*/
    }
  }
}

И покажите нам, что вы получили в консоли отладчика ( F12 в вашем браузере)

, если http.responseText - это небольшая часть HTML-кода:

let xxx = document.createElement('div')

xxx.innerHTML = '<p>abc defg <span id="test">xyz</span> hij klm nop </p>'  // in case of  http.responseText has this value...

console.log( xxx.querySelector('#test').textContent ) // => xyz
0 голосов
/ 21 июня 2019

Если вы использовали jquery:

При условии, что ответ был примерно таким:

let str = "<body><p>Paragraph Here</p><input id='test' value='foo'></body>";

Замените эту строку:

results = document.getElementById('test').value;

этой строкой:

let results = $('input#test', "<div>"+str+"</div>").val(); 

Из этого ответа

0 голосов
/ 21 июня 2019

Если responseText представляет собой обычный текст HTML, вы можете сделать это

document.getElementById('test').innerHTML = str;
...