probleme avec sessionStorage

Vos requêtes concernant Mozilla Firefox, le navigateur Gecko alternatif, ne trouvèrent point de réponses lorsque vous cherchâtes ? Toute l'équipe Geckozone est prête à vous aider.

Modérateurs : nico@nc, Mori, jpj, myahoo

thierryS
Arias
Messages : 3
Inscription : 12 déc. 2014, 17:06

probleme avec sessionStorage

Message par thierryS »

Bonjour,

J'ai un site internet qui fonctionnait très bien sur Firefox mais depuis que je l'ai mis à jour avec la version 34.0.5, j'ai le problème suivant :

TypeError: 'key' called on an object that does not implement interface Storage

Je travaille avec sessionStorage ( sessionStorage.setItem(id, value) ) en Jquery. ex d'un item stocké (1615_Article_102390 = "102390" )

Je récupère tous mes items par var ArrayInstal = sessionStorage; puis je les envoies vers un fichier PHP par le biais d'Ajax.

Mais c'est à cet instant que j'obtiens ce message.

Un console.log sur ma session ne me montre aucune erreur. Le script fonctionne sous Safari et Chrome.

Je ne vois pas ou chercher ce qui a changé dans Firfox entre les deux versions sur les sessions.

Cela m'embête car je suis un inconditionnel de FireFox depuis des années.

Merci de votre aide
Votre Navigateur : Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Avatar de l’utilisateur
Abraxas
Animal mythique
Messages : 10180
Inscription : 28 juil. 2011, 14:06

Re: probleme avec sessionStorage

Message par Abraxas »

Peux-tu donner un testcase avec le pbm stp, ça sera plus simple que du code dans le "vide". :)
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
thierryS
Arias
Messages : 3
Inscription : 12 déc. 2014, 17:06

Re: probleme avec sessionStorage

Message par thierryS »

Oui, j'ai refait une page avec un minimum :

Code : Tout sélectionner


<!DOCTYPE html>

<html>
	<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
	<title>test</title>

</head>
<body>

	<a id="godevis" href="#" class="tiny button secondary">click</a>

	<script type="text/javascript" src="js/jquery.2.1-min.js"></script>


<script type="text/javascript">
//<![CDATA[
(function($) {
		$.ajaxpost = function(params) {
		var defauts = {
			Url : "php/interventiondata.php",
			dataType : "json",
			Type2 : ""
			, Lang : "fr"
			};
		var paramatre1 = $.extend(defauts, params);
		var datapost;
			$.ajax({
				url: paramatre1.Url,
				global: false,
				type: "POST",
				data: ({           
					Type: paramatre1.Type,
					Type2: paramatre1.Type2,
					Data : paramatre1.Data
					,Lang : paramatre1.Lang
					}),
				dataType: paramatre1.dataType,
				async:false
				})
				.done(function(data){
				datapost = data;
				})
				.fail(function(jqXHR, textStatus) {
				alert( "LA REQUETTE A ECHOUEE MERCI DE RECOMMENCER: " + textStatus );
				});
			return datapost;
			};
		})(jQuery);

$(document).ready(function() {

	// JE STOCK UNE VARIABLE DE SESSION
	sessionStorage.setItem("104005", "1615");
 
	$( "#godevis" ).click(function(){
		//JE RECUPERE L ENSEMBLE DES VARIABLES
		var ArrayInstal = sessionStorage;
		//J ENVOIE LES DONNEES
		var Tableau = $.ajaxpost({Type:"CreerDevis",Data:ArrayInstal});

		return false;
		});
	});
//]]>
</script>
</body>
<html>
resultat au click :
TypeError: 'key' called on an object that does not implement interface Storage
Votre Navigateur : Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
thierryS
Arias
Messages : 3
Inscription : 12 déc. 2014, 17:06

Re: probleme avec sessionStorage

Message par thierryS »

Bon,

Pour que ce qui auront le même problème que moi voici la réponse (après quelques heures de recherche) :
var ArrayInstal = JSON.stringify(sessionStorage);
Par contre pour l'envoie avec ajax dans votre fichier PHP cela deviendra un objet.

Avant dans php je récupérais le POST avec $_POST['Data']['ArrayInstal']["Ma_clef"] maintenant il faut écrire :
$ArrayInstal = json_decode($_POST['Data']["ArrayInstal"]);
puis
$ArrayInstal->Ma_clef

Reste à voir le problème du retour d'info, car si vous écrivez le script tel quel vous obtiendrez :
L'utilisation d'XMLHttpRequest de façon synchrone sur le fil d'exécution principal est obsolète à cause de son impact négatif sur la navigation de l'utilisateur final. Consulter http://xhr.spec.whatwg.org/ pour plus d'informations.

Cela vient de async:false dans ajax, le problème c'est que quand je l'enlève, je n'ai plus le message mais ma variable "datapost" devient null.

Si je trouve je vous donnerai la solution, ou si une âme charitable la ?
Votre Navigateur : Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités