localstorage, dubbele items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front end developer React

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda ben je als PHP/Symfony Developer niet alleen gefocust op het ontwikkelen van software. Daarnaast ben je voortdurend bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Hieronder een kort overzicht van jouw takenpakket: Het ontwerpen en implementeren van webapplicaties met het Symfony Framework; Het schrijven van een schone en efficiënte codes; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klant; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van IT Operations Manager! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Back end developer Python, PHP

Functie Jij als full stack ontwikkelaar zult komen te werken samen met 1 PHP ontwikkelaar een PO en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult voornamelijk (lees 75%) werken aan de roostersoftware. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere flexwerkers ingezet kan worden. Verder willen ze financiële koppelingen gaan maken

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Senior Front-end developer (React)

Functie Met een ontwikkelafdeling van ruim 20 collega’s is dit zo ongeveer de helft van alle medewerkers. De software(ontwikkeling) is dan ook de drijvende kracht binnen de organisatie. Ze werken aan het verbeteren dan de bestaande, maar zeker ook nieuwe producten. De software bestaat uit verschillende (React) webapplicaties, maar ook een mobile (React native) app. Hierdoor kom je met verschillende uitdagingen in aanraking en is Mobile kennis natuurlijk mooi meegenomen. De software wordt door vele duizenden professionals dagelijks gebruikt en bevatten grote hoeveelheden data. Aan het team de uitdaging om hierin de best mogelijke gebruiksvriendelijkheid neer te zetten door gebruik

Bekijk vacature »

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar een Embedded Software developer. Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij enthousiast en een echte team player? Lees dan snel verder en laat wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot aantal creatieve en ambitieuze ontwikkelaars. Ze

Bekijk vacature »

React developer Inhouse cloudplatform

Functie De functie: Als front-end developer kom je te werken naast 2 andere front-end/React developers, waaronder één senior. Een hele mooie kans dus om in korte tijd veel nieuwe kennis en ervaring op te doen. Ze hebben momenteel veel werk hierin en daarom willen ze het team graag uitbreiden. Het is van belang dat je, zeker gezien het vele thuiswerken, in ieder geval al een aantal projecten hebt gedaan in React. Taken waar je aan kunt denken zijn het ontwikkelen van client-applicaties o.b.v. HTML5, React en andere open standaarden. Ook ben je nauw betrokken bij het implementeren van designs o.b.v.

Bekijk vacature »
Roy -

Roy -

21/10/2012 18:08:08
Quote Anchor link
Beste PHP'ers!

Ik ben wat aan het testen met het offline beschikbaar maken van een website. Heb hiervoor het volgende als test online gezet: http://goo.gl/U2Wsh

Het werkt goed maar ik krijg af en toe dubbele items wanneer ik meer dan één item offline toevoeg. Bij het offline toevoegen van items worden deze in localstorage geplaatst. De volgende keer als je online komt worden deze middels ajax gepost en vervolgens verwijderd uit de localstorage. Dit werkt prima als er offline één item toegevoegd wordt, maar wanneer het er meerdere zijn gaat het vaak niet helemaal lekker.

Even naar de broncode kijken maar zal de code ook hier maar even plaatsen:

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
if($_POST){
    file_put_contents('data.txt', implode(', ',$_POST)."\n", FILE_APPEND);
    header('Location: http://**knip**/html5/');
}

if($_GET['delete']){
    file_put_contents('data.txt', '');
    header('Location: http://**knip**/html5/');    
}

?>

<!DOCTYPE html>
<html manifest="manifest.php">
<head>
    <meta charset="utf-8">
    <title>HTML 5 Storage &amp; Sync test</title>    
</head>
<body>
    <div id="status"></div>

    <hr />

    <form method="post" action="">

        <input type="text" name="inputnaam1" />
        <input type="text" name="inputnaam2" />

        <input type="submit" value="Opslaan!" />

    </form>

    <hr />

    <? echo nl2br(htmlspecialchars(file_get_contents('data.txt'))); ?>

    <hr />
    <a href="index.php?delete=1">Alles verwijderen</a>

    
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script>
    (function()
    {
        //Form submit?
        $('form').submit(function()
        {
            //Offline?
            if( ! navigator.onLine )
            {
                alert('Je bent nu niet verbonden met het internet! De gegevens zijn lokaal opgeslagen en worden zodra er een verbinding is gesynchroniseerd!')
                //Set localStorage
                localStorage.setItem(new Date().getTime(), $(this).serialize() );
                //Empty inputs
                $('input[type=text]').val('');
                //Set status
                $('#status').html('NIET gesynchroniseerd');
                //Cancel submit
                return false;
            }
        });

        //Online?
        if( navigator.onLine )
        {
            //Data to sync?
            if(localStorage.length)
            {
                //Set status
                $('#status').html('Bezig met synchroniseren...');

                //Loop through localstorage
                for(var i in localStorage)
                {
                    //Send data with ajax
                    $.ajax({
                        url:         'http://**knip**/html5/save.php',
                        data:         localStorage.getItem(i),
                        type:         'POST',
                        success:     function(){
                            //Remove on success
                            localStorage.removeItem(i);
                        }
                    });
                }
            }
            //Set status
            $('#status').html('Gesynchroniseerd!');
        } else {
            //Something stored in localstorage?
            if(localStorage.length)
            {
                //Set status
                $('#status').html('NIET gesynchroniseerd');
            } else {
                //Set status
                $('#status').html('Gesynchroniseerd!');
            }
        }

        //Manifest (saved items) changed?
        window.applicationCache.addEventListener('updateready', function(e) {
            if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
                //Change cache files
                window.applicationCache.swapCache();
                //Reload page
                window.location.reload();
            }
        }, false);
        
    })();
    </script>
</body>
</html>


manifest.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CACHE MANIFEST
index.php
http://code.jquery.com/jquery-1.8.2.min.js
<?='# data.txt: '.md5_file('data.txt')."\n";?>
<?='# index.php: '.md5_file('index.php');?>


save.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($_POST){
    file_put_contents('data.txt', implode(', ',$_POST)."\n", FILE_APPEND);
}

?>


Ik hoop dat jullie mij wat verder kunnen helpen! :)
Gewijzigd op 21/10/2012 18:09:28 door Roy -
 
PHP hulp

PHP hulp

22/12/2024 09:36:26
 
Kris Peeters

Kris Peeters

22/10/2012 13:38:08
Quote Anchor link
Het eerste waar ik aan denk:

localStorage.removeItem(i);

Die i zal niet meer de juiste waarde hebben wanneer de request terug komt.

Wat ik zou aanraden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
success:     function(index){
  //Remove on success
  localStorage.removeItem(Number(index));
}


en dan zou save.php die index moeten echo'en.
 
Roy -

Roy -

22/10/2012 13:52:19
Quote Anchor link
Zou je het kunnen verklaren? Als ik het stukje er even tussenuit pak:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
for(var i in localStorage)
{
    //Send data with ajax
    $.ajax({
        url:         'http://**knip**/html5/save.php',
        data:         localStorage.getItem(i),
        type:         'POST',
        success:     function(){
            //Remove on success
            localStorage.removeItem(i);
        }
    });
}


Dan kan ik mij niets voorstellen waardoor "i" zou veranderen.
 
Kris Peeters

Kris Peeters

22/10/2012 14:37:28
Quote Anchor link
Ik zal het even illustreren, adhv een simpele request.

save.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $_POST['index'];
?>


index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function($) {
    for(var i =0; i<5; i++)
    {
        //Send data with ajax
        $.ajax({
            url:         'save.php',
            data:         {index: i},
            type:         'POST',
            success:     function(data) {
                $('#message').append(
                  'data: ' + data + ' - index: ' + i + '<br>'
                );
            }
        });
    }
});
</script>
<div id="message"></div>



Dit is wat je op je scherm krijgt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
data: 0 - index: 5
data: 1 - index: 5
data: 2 - index: 5
data: 3 - index: 5
data: 4 - index: 5


Ajax is asynchroon. De for-lus zal niet wachten tot het eerste verzoek klaar is vooraleer het aan de volgende begint.
Tegen het moment dat de eerste request terug is, is de for-lus al lang klaar, en blijft die i steken op de waarde van de laatste iteratie (nu ja ... +1).
Gewijzigd op 22/10/2012 14:41:11 door Kris Peeters
 
Roy -

Roy -

22/10/2012 14:40:11
Quote Anchor link
Duidelijk! Dank, gaan we straks even mee spelen :)

EDIT:
Het lijkt nu goed te gaan!

save.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($_POST){
    echo $_POST['index'];
    unset($_POST['index']);
    file_put_contents('data.txt', implode(', ',$_POST)."\n", FILE_APPEND);
}

?>


wijziging in index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$.ajax({
    url:         'http://**knip**/html5/save.php',
    data:         'index=' + i + '&' + localStorage.getItem(i),
    type:         'POST',
    success:     function(data){
        //Remove on success
        localStorage.removeItem(data);
    }
});


Hartelijk dank!
Gewijzigd op 22/10/2012 14:54:59 door Roy -
 
Kris Peeters

Kris Peeters

22/10/2012 15:04:41
Quote Anchor link
Graag gedaan.
Leuk script, trouwens.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.