XMLHttpRequest POST _self с использованием localStorage с PHP - PullRequest
0 голосов
/ 31 марта 2020

Я использую PHP 7.3 с MySQL v5.6.

Просматривая страницу каталога, я сохранил некоторые идентификаторы элементов в localStorage.wishlistStorage.data, и теперь на странице списка желаний я хочу получить этот список идентификаторов для отображения. Я использую PHP, потому что позже я буду отправлять и получать элементы из базы данных. Кроме того, легко создать HTML на лету, используя PHP и массив POST. К сожалению, я борюсь с AJAX XMLHttpRequest.

Я загружаю Javascript файл в нижней части страницы, который получает данные localStorage:

var wishlistStorage = {};

window.addEventListener("load", function() {
  wishlistStorage.get();
  loadWishlist();
});

wishlistStorage = {
  data : null, // empty storage
  get : function() {
    wishlistStorage.data = localStorage.getItem("wishlistStorage");
    if(wishlistStorage.data === null) { 
      wishlistStorage.data = { items: [], item_notes: [], comments: '' };
      wishlistStorage.save();
    }
    else { 
      wishlistStorage.data = JSON.parse(wishlistStorage.data); 
    }
  }
};

// get wishlist contents
function loadWishlist() {
  var items = wishlistStorage.data.items.join("%20");
  var wishlistRequest;
  if(window.XMLHttpRequest) {
    wishlistRequest = new XMLHttpRequest();
  } else {
    wishlistRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  wishlistRequest.onreadystatechange = function() {
    if(wishlistRequest.readyState == 4 && wishlistRequest.status == 200) {
      console.log("Got them.");
    } else {
      console.log("I see nothing.");
    }
    wishlistRequest.open("POST", "_self", true);
    wishlistRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    wishlistRequest.send("wishlist_items=" + encodeURIComponent(items));
  }
}

В тело списка желаний. php

<?php
  if (array_key_exists('wishlist', $_POST)) {
    $temporary_wishlist = $_POST['wishlist'];
    echo "Yes, it works! $temporary_wishlist";
  } else {
    echo 'Invalid parameters!';
  }
?>

Все, что я получаю, это сообщение "Неверные параметры". Ни одно из сообщений console.log не появляется. Куда я иду не так?

источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...