Разберитесь с событием, слушающим в JavaScript

Тело запроса x-www-form-urlencoded должно быть name=BARNEY%20MCGREW%21&rating=90.

Вы отправляете запрос по fetch с телом '{"name":"BARNEY MCGREW!","rating":90}'.

Поскольку нет =, вся строка JSON считается именем параметра с пустым значением.

Итак, вам дан объект из req.body, где в качестве ключа выступает строковый JSON.


Создайте URLSearchParams, передав ваши данные конструктору - замените JSON.stringify.

fetch('http://localhost:1234/acts/create', {
    method: 'POST',
    headers: {
        "Content-Type": "application/x-www-form-urlencoded",
    },
    body: new URLSearchParams({
        name: 'BARNEY MCGREW!',
        rating: 90,
    })
})

Ваше тело запроса fetch теперь должно быть name=BARNEY%20MCGREW%21&rating=90.

Это будет правильно проанализировано анализатором тела как содержимое x-www-form-urlencoded.


Если URLSearchParams не определено, есть пакеты npm, которые его предоставят. В противном случае все, что он делает, это создает строку URL-параметров путем кодирования и объединения ключей и значений с помощью = и объединения каждой пары с помощью &, что можно сделать следующим образом:

function URLSearchParams(data) {
    return Object.keys(data).map(key => {
        return `${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`;
    }).join('&');
}
7
задан Pete Karl II 6 October 2008 в 15:56
поделиться

5 ответов

Я сделал, "осматривают элемент" на ссылке на той странице с поджигателем, и на вкладке DOM это говорит, что существует (анонимная) функция onclick, и также некоторая другая функция, вызванная "s_onclick_0".

Я подключил коаксиальным кабелем поджигателя, помещающего часы как

alert(document.links[0].onclick)

чтобы предупредить меня функция onclick что omniture (я предполагаю), присоединения к ссылкам:

function anonymous(e) {
  var s = s_c_il[0], b = s.eh(this, "onclick");
  s.lnk = s.co(this);
  s.t();
  s.lnk = 0;
  if (b) {
     return this[b](e);
  }
  return true;
}

Возможно, таким же образом Вы видите то, что это действительно бежит за всей той путаницей.

4
ответ дан 7 December 2019 в 12:26
поделиться

Ряд рекомендаций реализаторам аналитики на странице:

  • Используйте событие уровня документа, получая только, это находится почти в каждом случае (кроме того, изменяются/отправляют события), достаточный

  • Не выполняйте интенсивный вычислением код (а также никакие операции IO) в обработчиках, скорее откладывайте выполнение с тайм-аутом

Если это, два простых правила приняты во внимание, я держал пари, что Ваш браузер выживет

0
ответ дан 7 December 2019 в 12:26
поделиться

DOM не обеспечивает средств для занимания самоанализом через наборы слушателей событий, связанные с узлом.

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

Был разговор недавно о группе WebAPI в W3 на том, добавить ли эту функциональность. Специалисты, кажется, против этого. Я совместно использую их аргументы.

1
ответ дан 7 December 2019 в 12:26
поделиться

У меня есть некоторый опыт с Omniture и рассмотрением Вашего s_code.js, у Вас есть несколько вещей, продолжающихся в области "Link Tracking", например:


/* Link Tracking Config */
s.trackDownloadLinks=true
s.trackExternalLinks=true
s.trackInlineStats=true
s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,pdf,doc,docx,xls,xlsx,ppt,pptx"
s.linkInternalFilters="javascript:,gatehousemedia.com"
s.linkLeaveQueryString=false
s.linkTrackVars="None"
s.linkTrackEvents="None"

Я консультировался бы с людьми в Omniture и проверил бы, что Ваша конфигурация отслеживания ссылок настраивается правильно.

А именно, этот шаблон и ссылки внутри, кажется, принадлежат morningsun.net, и все же morningsun.net не находится в установке s.linkInternalFilters. При использовании того же s_code.js файла для нескольких доменов можно использовать JavaScript для устанавливания значений конфигурации для вещей как это (базирующийся на document.location.hostname, например).

У меня лично нет опыта с конфигурацией отслеживания ссылок, или я предоставил бы Вам больше подробной информации о том, как настроить его :)

0
ответ дан 7 December 2019 в 12:26
поделиться

При перемещении домой я пришел к решению, которое допускает самоанализ обработчиков событий на элементе, добавленном с AddEventListener. Выполненный код перед включением Вашего кода аналитики. Код не был проверен, если работы, но идея, я предполагаю, ясно. Это не будет работать в IE, однако можно применить подобную технику (перезаписи участника API) там также.

(function(){
  var fAddEventListener = HTMLElement.prototype.addEventListener;
  HTMLElement.prototype.addEventListener = function() {
   if (!this._listeners)
      this._listeners = [];
   this._listeners.push(arguments);
   fAddEventListener.apply(this, arguments);
  }
})();
0
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

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