npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

ajax-promise-es8

v1.0.1

Published

for servers

Downloads

6

Readme

Sintax


ajax.post();

const url = 'request';
const formData = new FormData();
const notification = true;
ajax.post(url, formData, notification)
	.then((response) => {
        #code
	})

ajax.get();

const url = 'request';
const parameters = 'name=foo&lastname=bar';
const notification = true;
ajax.get(url, parameters, notification)
	.then((response) => {
        #code
	})

Documentation


os ajax tanto post quanto o get são assíncronos então retornará uma promise.

ajax.post(url, formData, notification)
  • url: por padrão ele já espera um arquivo.php, so o nome do arquivo ja basta.
  • formData: passando seu formulario por padrão ele converte em objeto com o constructor do new FormData()
  • notification: true para alertar o que realmente esta mandando e o que esta recebendo. false para caso não for mais necessario. OBS: não obrigatorio por padrão recebe false
ajax.get(url, formData, notification)
  • *url: por padrão ele já espera um arquivo.php, so o nome do arquivo ja basta.
  • *parameters: deverá passar uma query string para requisições.
  • notification: true para alertar o que realmente esta mandando e o que esta recebendo. false para caso não for mais necessario. OBS: não obrigatorio por padrão recebe false.

Exemplo to use


primeiro crie sua pasta "ajax-promise-es8" e dentro dela crie uma pasta "src", dentro de src crie uma pasta chamada "pages" e dentro de pages outras pastas com nome "get" e outra "post". Abra seu terminal dentro da pasta ajax-promise-es8 e instale o ajax usando o comando "npm i ajax-promise-es8".

Estrutura de pastas

node_modules
ajax-promise-es8
    -> src
      -> pages
          -> get
          -> post
dentro de src/pages/post/ vamos criar 3 arquivos (index.js, users.js e users.php).

Abra o index.js e exporte uma função com nome HTMLform, dentro crie seu formulario.

src/pages/post/index.js

export default function HTMLform() {
	let form = 	'<form id="myForm">'
	form += 		'<br><label>Name: </label><br>'
	form += 		'<input type="text" name="name"><br>'
	form += 		'<label>Last Name: </label><br>'
	form += 		'<input type="text" name="lastname"><br>'
	form += 		'<button type="submit">Register</button>'
	form += 	'</form>'

	return form;
}

Abra o users.js e importe o ajax e o message de dentro de node_modules, exporte uma função com o nome "register" faça um bloco try/catch e chame a função ajax.post(url, formData, notification) e passe os parametros url coloque o diretorio do arquivo.php, em formData coloque o fomulario e em passe true.

obs: você pode usar o bloco try/catch ou pode usar uma promise .catch((error) => {})

src/pages/post/users.js

import { ajax, message } from '/node_modules/ajax-promise-es8/ajax.js';

export default function register() {

	try {

		ajax.post('./src/pages/post/users', myForm, true)
			.then((response) => {
				const user = JSON.parse(response);
				alert(`User ${user.name}${user.lastname} register with success!`);
			})

	} catch (error) {
		console.error(error)
	}

}

em users.php vamos simular o cadastro de um usuario depois devolver o retorno do usuario em json usando a função json_enconde do php.

src/pages/post/users.php

<?php

	//UM EXEMPLO BEM BESTINHA!
	$user = [
        0 => [
            "id"        => 1,
            "name"      => $_POST['name'],
            "lastname"  => $_POST['lastname']
        ]
    ];


    echo json_encode($user[0]);

agora em src/pages/get/index.js exporte duas funções uma com nome "HTMLButtonlistAllUsers" e a outra "HTMLDivUsers". crie um botão com id "toList" dentro da função HTMLButtonlistAllUsers, crie uma div com id "div-users" na função HTMLDivUsers.

src/pages/get/index.js

export function HTMLButtonlistAllUsers() {

	let button = '<br><br><button id="toList">List All Users</button>';

	return button;
}

export function HTMLDivUsers() {
	let div = '<div id="div-users"></div>'
	return div;
}

em users.js importe o ajax e o message, crie uma função assíncrona com o nome "listAllUsers", dentro da função listAllUsers crie o bloco try/catch e crie uma variável let list em seguida chame o ajax.get(url, parameters, notification), na url coloque o diretorio onde se localiza o users.php, parameters não precisa passar nada e notication coloque true popule os usuarios que vão ser retornado na promise then usando array.map() e retorne a lista

src/pages/get/users.js

import { ajax, message } from '/node_modules/ajax-promise-es8/ajax.js';

export default async function listAllUsers() {

	try {

		let list = `<h3>List users</h3>`
		await ajax.get('./src/pages/get/users', '', true)
			.then((response) => {
				const users = JSON.parse(response);

				list += 	`<ol>`;
				users.map((user) => list += `<li>${user.name}${user.lastname}</li>`)
				list += 	`</ol>`;

			})
		return list;

	} catch (error) {
		console.error(error);
	}

}

em users.php vamos SIMULAR denovo só que dessa vez o retorno da busca em um banco de dados (3 usuários).

src/pages/get/users.php

<?php

    //UM OUTRO EXEMPLO BEM BESTINHA!
	$users = [

        0 => [
            "id"        => 1,
            "name"      => "Hállan",
            "lastname"  => "Costa"
        ],
        1 => [
            "id"        => 2,
            "name"      => "Valentina",
            "lastname"  => "Soares"
        ],
        2 => [
            "id"        => 3,
            "name"      => "Carlos",
            "lastname"  => "Valencio"
        ]
    ];

    echo json_encode($users);

Terminamos nossas rotas para fazer a requisição!


Agora crie dois arquivos no diretorio / que é o da nossa pasta ajax-promise-es8 com nome de (app.js e index.php). dentro de /index.php crie o html e um div dentro do body com id "root", embaixo dessa div crie um script e coloque tipo desse script como module, dentro de script importe o arquivo app.js com o nome app e chame a função app.

/index.php

<!DOCTYPE html>
<html lang="pt-BR">
<head>
	<meta charset="utf-8">
	<title>AJAX - POST</title>
</head>
<body>
	<div id="root"></div>

	<script type="module">
		import app from './app.js';
		app();
	</script>
</body>
</html>

No diretorio src/ crie dois arquivos com nome (index.js e o routes.js).

dentro de routes.js importe a função "HTMLform" que criamos dentro de pages/post/index.js e a função "register" que criamos dentro de pages/post/users.js.

ainda dentro de routes.js importe as funções "HTMLButtonlistAllUsers" e "HTMLDivUsers" que criamos dentro de pages/get/index.js e importe também a função "listAllUsers" que criamos dentro de pages/get/users.js

export uma função chamada RequestInPost. dentro de RequestInPost crie uma variável root para pegar nossa div do /index.php. execute a função "HTMLform" dentro de root depois crie uma variável pegando o id do formulario, crie um evento para quando o formulario for submetido de um preventDefault no formulario e execute a nossa função "register".

agora exporte uma função chamada RequestInGet. dentro de RequestInGet crie a mesma variável com nome "root" e pegue a div com id root do /index.php. execute a nossa função HTMLButtonlistAllUsers dentro de root e pegue o id do nosso botão e crie um evento para ele, execute dentro de root também a função HTMLDivUsers, pegue o id dessa div e execite a função listAllUsers e use a promise then para quando o resultado estiver pronto ele retorne. dentro do then coloque a resposta dentro de divUsers.

src/routes.js

import HTMLform from './pages/post/index.js';
import register from './pages/post/users.js';

import { HTMLButtonlistAllUsers, HTMLDivUsers } from './pages/get/index.js';
import listAllUsers from './pages/get/users.js';

export function RequestInPost() {
	const root = document.getElementById('root');

	root.innerHTML += HTMLform();

	const myForm = document.getElementById('myForm');
	myForm.addEventListener('submit', (e) => {
		e.preventDefault();
		register();
	})
}

export function RequestInGet() {
	root.innerHTML += HTMLButtonlistAllUsers();

	const button = document.querySelector('button#toList');
	button.addEventListener('click', () => {
		root.innerHTML += HTMLDivUsers();
		const divUsers = document.querySelector('div#div-users');
		listAllUsers()
			.then((response) => {
				divUsers.innerHTML = response;
			});
	})
}

dentro de index.js importe RequestInPost e RequestInGet de dentro de routes.js. Exporte uma função e crie os botões "POST" e passe o id "post" e GET e passe o id "get", chame esses botões para dentro da nossa div root do /index.php.

Crie a variável btnPost e crie um evento para quando ele clicar esse botão dar um alerta com a messagem "You will initialize the request POST" e executar a função RequestInPost.

Crie a variável btnGet e crie um evento para quando ele clicar esse botão dar um alerta com a messagem "You will initialize the request GET" e executar a função RequestInGet.

src/index.js

import { RequestInPost, RequestInGet } from './routes.js';

export default function() {
	let buttons = '<button id="post">POST</button>&nbsp'
	buttons += '<button id="get">GET</button>'
	document.getElementById('root').innerHTML = buttons;

	const btnPost = document.querySelector('button#post');
	btnPost.addEventListener('click', () => {
		alert('You will initialize the request POST');
		RequestInPost();
	})

	const btnGet = document.querySelector('button#get');
	btnGet.addEventListener('click', () => {
		alert('You will initialize the request GET');
		RequestInGet();
	})
}

TERMINADO TUDO, EXECUTE O SERVIDOR PHP COM O COMANDO E TESTO-O:

php -S localhost:8888

REPOSITÓRIO PROJETO CONCLUÍDO: (https://github.com/HallanCosta/how-to-use-ajax-promise-es8.git)