localstorage, dubbele items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior PHP Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte website die in eigen beheer zijn. In onze vestiging in Nederweert zitten onze development afdelingen en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé PHP/Back-end developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het bedenken van nieuwe functionaliteiten Het verbeteren van het

Bekijk vacature »

Senior PHP developer met ambities tot Software Arc

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met de back

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

Software Programmeur

Functie omschrijving Ben jij op zoek naar een organisatie waar je samen met een team werkt aan iets moois en waar je naast hard werken ook hard kunt lachen? Dan ben je hier aan het juiste adres! Voor een informeel IT-bedrijf in omgeving Wassenaar zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed

Bekijk vacature »

Applicatieontwikkelaar Java EE

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving De afdeling IV –

Bekijk vacature »

Traineeship IT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

C# Ontwikkelaar

In het kort Als C# .NET Core ontwikkelaar ga je binnen onze business unit Transport en Logistiek aan de slag complexe maatwerk software voor bedrijf kritische systemen binnen de technische automatisering. Denk bijvoorbeeld een IoT-oplossing voor de logistieke sector waarbij we van ruim 200.000 machines de telemetrie en events verwerken. We zijn actief in de distributielogistiek, havenlogistiek en productielogistiek. Naast C# en .NET Core maken we ook gebruik van Azure technologie. En als trotse Microsoft Gold Partner leren we graag van en met jou. Wil jij jezelf blijven ontwikkelen binnen de technische automatisering met .NET, dan gaan we deze uitdaging

Bekijk vacature »

Ontwikkelaar Centrale Monitoring

Ontwikkelaar centrale Monitoring Functieomschrijving Wil jij een bijdrage leveren aan het onderhoud, opzetten en ontwikkelingen van technologieën van SSC-ICT, een van de grootste ICT-dienstverleners van en voor de Rijksoverheid? Je komt als monitorspecialist te werken bij team Operations Management Services. Dit team werkt aan het stabiliseren en waarborgen van een betrouwbare monitoromgeving voor 7 ministeries. Jij begeleidt het implementatieproces van de te monitoren technologieën, onder andere via management packs, connectoren en API's. Je hebt hiervoor veel contact met interne en externe klanten, die hun wensen op het gebied van monitoring aan jou doorgeven. Je beoordeelt deze wensen en komt met

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

C#.NET ontwikkelaar

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Je bouwt webshops, webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Framework en C#. Je zorgt voor de optimalisering van bestaande software en de automatisering van

Bekijk vacature »

Junior/medior Back end developer PHP, Laravel

Functie Jij als ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor veel van je tijd je bezig houden met het ontwikkelen van maatwerk features en applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. Jij als full stack developer zult dus

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Traineeship Java Developer

Functie Wat ga je doen als Java Developer? Jij start via ons bij deze opdrachtgever als Trainee Java ontwikkelaar, tijdens het traineeship ga je in 1 jaar van de basis naar professioneel Java ontwikkelaar. Je start samen met een groep trainees, volgt de aangeboden cursussen en gaat aan de slag bij één van onze opdrachtgevers. Na een aantal maanden volgt de volgende opdracht. Door de groei in jouw rol kom je op steeds complexere opdrachten terecht. Veel afwisseling dus. Collega’s met ervaring helpen je bij deze groei en samen met jouw coach ga je een persoonlijke leerplan opzetten om jou

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

26/04/2024 09:07:31
 
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.