localstorage, dubbele items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Developer (Permanent position with the em

Bedrijfsomschrijving Dutch specialist in technical installation materials. Functieomschrijving Purpose of the position: Our client is looking for a Back-end Developer who, together with the rest of the energetic and dynamic team, is responsible for the development and management of the website. This not only concerns the development and management of the current website, but also the development of a new Headless Commerce Platform to keep the customer's website Future proof. Within the IT department, there is a real DevOps culture and the commerce team is at the forefront and tries to implement continuous improvements. Most important tasks: ï‚· Designing and

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

Bekijk vacature »

C#.NET Developer

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

Software Developer Java

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Back-end Developer

Functie omschrijving Als Back-end Developer heb je de eer om als eerste interne developer bij deze organisatie te beginnen. Op dit moment zijn er externe developers, maar daar wil de organisatie verandering in brengen. Op termijn moet de gehele afdeling uit intern personeel bestaan. Je kan je voorstellen dat de eerste interne developer ook de nodige kennis mee moet brengen. Dat klopt. Je gaat je namelijk aan het begin bekommeren over de externe developers en uiteindelijk over je interne collega's. Verder ga je het volgende doen: Het bedenken, beheren en onderhouden van webportalen, API-koppelingen en applicaties; Je bedenkt en werkt

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

.NET Developer Medior Senior

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Herbruikbare componenten maken; Testen; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als .NET Developer kom jij terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als .NET Developer werk jij aan het ontwikkelen van verbeterde software voor

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

No-Code Betty Blocks ontwikkelaar

Bedrijfsomschrijving Wil jij de bedrijfsprocessen van klanten revolutionair digitaliseren en optimaliseren zonder beperkt te worden door programmeertalen? Kom werken bij een snelgroeiende en professionele organisatie met een gezonde dosis humor en veel vrijheid om jezelf te ontwikkelen. Als No-Code Betty Blocks ontwikkelaar werk je vanuit ons kantoor in het hart van Nederland, je thuiswerkplek of op locatie bij de klant. We faciliteren de juiste trainingen en ondersteuning zodat je een echte Betty Blocks expert wordt. Naast het werk zijn er bij ons bijzondere events, zoals een jaarlijkse zeildag, een zomerse barbecue en een knus kerstdiner om de grillige maanden door

Bekijk vacature »

In-house .NET software developer

Functie omschrijving Ben jij op zoek naar een uitdagende in-house development functie? Maak jij graag hét verschil m.b.t. interne automatisering? Haal jij energie uit het automatiseren van processen voor je eigen collega's? Dan hebben wij de perfecte vacature voor je! Voor een gezellig Brabants familiebedrijf, zijn wij op zoek naar een .NET software developer. Je gaat in deze zelfstandige functie werken aan de ontwikkeling van eigen applicaties & en het koppelen van deze applicaties aan de ingekocht software. Jouw werkzaamheden zien er als volgt uit: Het management team signaleert behoeftes vanuit de business. Vervolgens worden deze behoeftes uitgewerkt en geprioriteerd.

Bekijk vacature »

Software Ontwikkelaar .NET te Zaandam

Bedrijfsomschrijving Je komt hier terecht bij een door-en-door softwarebedrijf, waarbinnen meerdere SaaS pakketten worden ontwikkelt voor diverse sectoren. Hierbij kun je denken aan bijvoorbeeld de logistieke en medische branche. Deze organisatie kenmerkt zich door de hoge mate van complexiteit in de applicaties, wat betekent dat jij je hier niet zal gaan vervelen. Integendeel: Jij gaat hier elke dag ontzettend veel leren en je in razend tempo ontwikkelen als C# .Net Developer met focus op back-end. Het team bestaat uit ongeveer 20 personen personen, waarvan het grootste deel zich richt op software development. De sfeer is informeel en professioneel. De producten

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/05/2026 12:26:00
 
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.