Действительно ли JavaScript может получить доступ к DOM ответа текста/HTML Ajax?

Мне удалось получить запрос, который работает, но мне любопытно, есть ли более лаконичный способ его построения (все еще учимся!).

Основываясь на представленной вами схеме и предполагая, что ваш запрос действительно возвращает то, что вы ожидаете - ниже «оптимизированной» версии должен возвращаться тот же результат

#standardSQL
WITH companies AS (
  SELECT
      o.companyid AS companyid,
      STRUCT(o.properties.name.value, o.properties.name.timestamp) AS name,
      STRUCT(o.properties.industry.value, o.properties.industry.timestamp) AS industry,
      STRUCT(o.properties.lifecyclestage.value, o.properties.lifecyclestage.timestamp) AS lifecyclestage
  FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY o.companyid ORDER BY o._sdc_batched_at DESC) AS seqnum
    FROM `project.hubspot.companies` o
  ) o
  WHERE seqnum = 1
)
SELECT
  companyid,
  name.value AS name,
  industry.value AS industry,
  lifecyclestage.value AS lifecyclestage
FROM companies   

Как видите, я просто удалил [111 ] потому что у вас уже есть только одна запись / строка для каждой компании после подачи заявки WHERE seqnum = 1, поэтому нет никакой причины группировать только одну строку для каждой компании. По той же самой причине я удалил ARRAY_AGG( ORDER BY)[SAFE_OFFSET(0)] - она ​​просто агрегировала одну структуру, а затем извлекла этот один элемент из массива - поэтому нет необходимости делать это

6
задан Josh 12 May 2009 в 23:27
поделиться

4 ответа

Jquery (или другие библиотеки ??) в основном сделает все это за вас. Я настоятельно рекомендую изучить это и не изобретать велосипед.

Для запроса, вероятно, будет выглядеть так:

// Make a call to url, with data 
$.ajax(
  { url: $url,
    data: $data, 
    dataType: 'xml',
    callback: function(returnData) { 
      // Jquery find <mytag attribute="foo">...</mytag> and store it in mydata
      var mydata = $(returnData).find('mytag[attribute=foo]');
      // Insert into current page to somewhere with class="after-me"
      $('.after-me').html(mydata);
   }
});

У меня может быть неправильный синтаксис. Но вот документы: http://docs.jquery.com/Ajax/jQuery.ajax#options

10
ответ дан 9 December 2019 в 20:48
поделиться

Да, можно. Здесь вы найдете ресурс о том, как анализировать ответы XML.

Если вы загружаете его в уже существующее дерево DOM ( innerHTML ), вы должны иметь возможность вызывать стандартные функции обхода DOM, к которым вы привыкли.

1
ответ дан 9 December 2019 в 20:48
поделиться

теги сценария не будут работать в любом браузере любым способом .. поэтому для доступа к dom текущей страницы примените функцию "eval" к тексту сценария, который вы в данный момент запрашивали.

я имею в виду, если у вас есть html, например:

<div id="content">some html</div>

, и у вас есть текст сценария на стороне сервера, например

content.innerHTML = "foo";

, используйте функцию eval в ответе ajax

function onXmlHttpAnswer()
{
   if(xmlHttp.readyState==4 && xmlHttp.status==200)eval(xmlHttp.responseText);
}
0
ответ дан 9 December 2019 в 20:48
поделиться

Не беспокойтесь о действительности , поскольку вы делаете это динамически с помощью javascript, вы можете заполнить innerHTML скрытого элемента данными вашего ответа, а затем использовать любые функции DOM / jQuery, которые вы хотите

1
ответ дан 9 December 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: