Отправка JSON через AJAX в WordPress с использованием Vanilla JS - PullRequest
0 голосов
/ 27 февраля 2019

Я отправляю json на моем сервере с использованием vanilla JS, и он возвращает неверный запрос. Кажется, сервер хочет только пару значений ключа, например «page = pageData & action = act», когда я делаю это, это работает, но я быхочу отправить данные таким образом.Есть ли способ сделать это возможным?Когда я пытаюсь сделать это в jquery, он работает нормально.

$('.more-headlines').on('click', function() {
  var pageData = $(this).data('page');
  var pageURL = $(this).data('url');
  var act = 'load_more';
  var jsondata = {
    page : pageData,
    action : act
  }
  var xhr = new XMLHttpRequest();
  xhr.open('POST', pageURL, true);
  xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  xhr.onload = function() {
    if (xhr.status >=200 && xhr.status < 400) {
      var data = JSON.parse(xhr.responseText);
      console.log(data);
    } else {
      console.log('sad');
    }
  };
  xhr.send(JSON.stringify(jsondata));
});

Это мой код в jquery

$('.more-headlines').on('click', function () {
    var that = $(this);
        pageData = $(this).data('page');
        newPage = pageData+1;
        pageURL = $(this).data('url');
        act = 'load_more';
        that.addClass('icon-spin');
        that.find('span').html('loading headline');
        jsondata = {
          page : pageData,
          action : act
        }
    $.ajax ({
      type: 'POST',
      url: pageURL,
      data: jsondata,
      success: function(response) {
        setTimeout( function () {

          that.data('page', newPage);
          $('#featureOnDemand ul').append(response);
          that.removeClass('icon-spin');
          that.find('span').html('See more headlines');

        }, 500);
      }
    });
});

Я посмотрел на вкладку сети в Chrome, и я увидел, что отправказапрос становится парой ключ-значение, например, «page = pageData & action = act».Я застрял в этой части, потому что я хочу сделать запрос vanilla js ajax в моем проекте.Любая идея будет сильно оценена.Большое спасибо!

1 Ответ

0 голосов
/ 02 мая 2019

Вы хотите сериализовать данные вашего объекта.Вот вспомогательная функция, в которую вы можете передать свой объект:

var serializeObject = function (obj) {
    var serialized = [];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            serialized.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
        }
    }
    return serialized.join('&');
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...