En utilisant window.location.href, j'aimerais transmettre des données POST à la nouvelle page que j'ouvre. Est-ce possible en utilisant JavaScript et jQuery ?
Ou dans le done()
fonction définie window.location.href
En utilisant window.location.href, j'aimerais transmettre des données POST à la nouvelle page que j'ouvre. Est-ce possible en utilisant JavaScript et jQuery ?
Avez-vous envisagé d'utiliser simplement le stockage local/session ? -Ou bien, en fonction de la complexité de ce que vous construisez, vous pourriez même utiliser IndexDB.
note :
Local storage
y indexDB
ne sont pas sécurisés - il faut donc éviter d'y stocker des données sensibles ou personnelles (noms, adresses, adresses électroniques, dates de naissance, etc.
Session Storage
est une option plus sûre pour tout ce qui est sensible, elle n'est accessible qu'à l'origine qui a défini les éléments et s'efface dès que le navigateur/onglet est fermé.
IndexDB
est un peu plus [mais pas beaucoup plus] compliqué et est une 30MB noSQL database
intégré à tous les navigateurs (mais peut être illimité si l'utilisateur choisit de le faire) -> la prochaine fois que vous utiliserez Google docs, ouvrez DevTools -> application -> IndexDB et jetez-y un coup d'œil. [alerte spoiler : c'est crypté].
L'accent est mis sur Local
y Session Storage
Les deux sont très simples à utiliser :
// To Set
sessionStorage.setItem( 'key' , 'value' );
// e.g.
sessionStorage.setItem( 'formData' , { name: "Mr Manager", company: "Bluth's Frozen Bananas", ... } );
// Get The Data
const fromData = sessionStorage.getItem( 'key' );
// e.g. (after navigating to next location)
const fromData = sessionStorage.getItem( 'formData' );
// Remove
sessionStorage.removeItem( 'key' );
// Remove _all_ saved data sessionStorage
sessionStorage.clear( );
Si la simplicité n'est pas votre truc, ou si vous voulez faire du hors piste et essayer une approche différente tous ensemble -> vous pouvez probablement utiliser un shared web worker
... tu sais, juste pour le plaisir.
C'est aussi simple que cela
$.post({url: "som_page.php",
data: { data1: value1, data2: value2 }
).done(function( data ) {
$( "body" ).html(data);
});
});
J'ai dû résoudre ce problème pour faire un verrouillage d'écran de mon application où je devais passer des données sensibles comme l'utilisateur et l'url où il travaillait. Puis créer une fonction qui exécute ce code
J'utilise une approche très différente à ce sujet. Je place des cookies de navigation dans le client qui expirent une seconde après que j'ai placé window.location.href
.
C'est beaucoup plus sûr que d'intégrer vos paramètres dans l'URL.
Le serveur reçoit les paramètres sous forme de cookies, et le navigateur supprime les cookies juste après leur envoi.
const expires = new Date(Date.now() + 1000).toUTCString()
document.cookie = `oauth-username=user123; expires=${expires}`
window.location.href = `https:foo.com/oauth/google/link`
Kissa Mia n'a peut-être pas bien formulé sa réponse, mais elle a raison en ce qui concerne la voie GET. La question n'est pas liée à l'utilisation de la méthode POST - l'utilisateur a juste demandé s'il y avait un moyen d'utiliser la méthode GET. Données POST et l'envoyer via window.location.href. Et vous devez d'abord savoir que Window.location.href IS une requête GET. Cette réponse n'est pas fausse - il ne sera simplement pas facile de s'adapter à un grand nombre de champs de formulaire, encodés sous forme de QueryString. Cependant, le moyen le plus évident d'envoyer des données via une URL (ce que vous pouvez modifier avec window.location.href) est d'utiliser des paramètres de chaîne de requête.
@SylonZero Vous ne pouvez pas joindre des données POST à une requête GET. Il s'agit de différents types de requêtes et les données ont un aspect différent dans une requête POST. Les parties importantes de la spécification HTTP sont assez courtes.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
12 votes
Réglage de
window.location.href
fait une demande GET pour la nouvelle URL, et non POST.