Lorsque j'utilise window.location.href, j'aimerais transmettre les données POST à la nouvelle page que j'ouvre. est-ce possible en utilisant JavaScript et jQuery?
javascript
jquery
Brian
la source
la source
window.location.href
fait une demande GET pour la nouvelle URL, pas POST.Réponses:
En utilisant,
window.location.href
il n'est pas possible d'envoyer une requête POST.Ce que vous devez faire est de configurer une
form
balise avec des champs de données, de définir l'action
attribut du formulaire sur l'URL et l'method
attribut sur POST, puis d'appeler lasubmit
méthode sur laform
balise.la source
form
, donc tout est envoyé automatiquement ensemble?$("#myForm").submit()
. Le formulaire - qui sera invisible et utilisé uniquement pour soumettre des valeurs à partir de votre code côté client, et non une entrée utilisateur - ne sera jamais affiché ni utilisé d'une autre manière, et la page sera actualisée.Ajoutez un formulaire à votre HTML, quelque chose comme ceci:
et utilisez JQuery pour remplir ces valeurs (bien sûr, vous pouvez également utiliser javascript pour faire quelque chose de similaire)
Puis enfin soumettre le formulaire
côté serveur, vous devriez être en mesure d'obtenir les données que vous avez envoyées en vérifiant
var1
etvar2
, comment faire cela dépend de la langue côté serveur que vous utilisez.la source
Utilisez ce fichier: "jquery.redirect.js"
voir https://github.com/mgalante/jquery.redirect
la source
Comme cela a été dit dans d'autres réponses, il n'y a aucun moyen de faire une requête POST en utilisant window.location.href, pour ce faire, vous pouvez créer un formulaire et le soumettre immédiatement.
Vous pouvez utiliser cette fonction:
https://stackoverflow.com/a/133997/2965158
la source
Réponse courte: non.
window.location.href
n'est pas capable de transmettre des données POST.Réponse un peu plus satisfaisante: vous pouvez utiliser cette fonction pour cloner toutes vos données de formulaire et les soumettre.
submitMe.importFields(form_element);
pour chacun des trois formulaires que vous souhaitez soumettre.<input name="email">
in<form name="login">
, le nom soumis seralogin_name
.nameJoiner
variable en autre chose que_
pour qu'elle n'entre pas en conflit avec votre schéma de dénomination d'entrée.submitMe.submit();
la source
c'est aussi simple que ça
J'ai dû résoudre ce problème pour verrouiller l'écran de mon application où je devais transmettre des données sensibles en tant qu'utilisateur et l'url où il travaillait. Ensuite, créez une fonction qui exécute ce code
la source
done()
ensemble de fonctionswindow.location.href
Avez-vous envisagé d'utiliser simplement le stockage local / de session? -ou- Selon la complexité de ce que vous construisez; vous pouvez même utiliser indexDB.
remarque :
Local storage
etindexDB
ne sont pas sécurisés - vous voulez donc éviter de stocker des données sensibles / personnelles (c'est-à-dire noms, adresses, adresses e-mail, date de naissance, etc.) dans l'un ou l'autre de ces éléments.Session Storage
est une option plus sécurisée pour tout ce qui est sensible, elle n'est accessible qu'à l'origine qui a défini les éléments et s'efface également dès que le navigateur / l'onglet est fermé.IndexDB
est un peu plus [mais pas beaucoup plus] compliqué et est30MB noSQL database
intégré à chaque navigateur (mais peut être fondamentalement illimité si l'utilisateur opte) -> la prochaine fois que vous utilisez Google docs, ouvrez DevTools -> application -> IndexDB et prendre un pic. [alerte spoiler: c'est crypté].Se concentrer sur
Local
etSession Storage
; ce sont tous les deux très simples à utiliser:Si simple n'est pas votre truc -ou- peut-être que vous voulez sortir de la route et essayer une approche différente tous ensemble -> vous pouvez probablement utiliser un
shared web worker
... vous savez, juste pour les coups de pied.la source
Vous pouvez utiliser GET au lieu de pass, mais n'utilisez pas cette méthode pour les valeurs importantes,
Dans le CustomerBasket.php
la source