localstorage, dubbele items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mendix Ontwikkelaar - Vernieuwen van het applicati

Bedrijfsomschrijving De ontwikkelingen in de transportsector gaan razendsnel. Bij ons kun je een belangrijke rol spelen in deze sector. We streven ernaar om onze klanten te ontzorgen op het gebied van continuïteit en veiligheid met innovatieve producten en diensten. We willen dat onze klanten de veiligste vervoerders van Europa worden. Ons team werkt hard om deze ambitieuze doelstellingen te bereiken en we bieden een motiverende werkomgeving aan. We zijn op zoek naar zelfstarters met een focus op resultaat en beslissingsbevoegdheid. Functieomschrijving Als Mendix ontwikkelaar bij deze organisatie heb je een gevarieerde baan. Het applicatielandschap wordt vernieuwd en de “schade en

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

Backend Developer PHP Laravel SaaS

Dit ga je doen Het ontwikkelen van nieuwe features die bijdragen aan de groei van de klanten van de organisatie; Je denkt mee over nieuwe innovaties, features en verbeteringen in de applicatiearchitectuur; Je draagt bij aan de continue ontwikkeling van jouw team doordat je elke dag streeft naar het verbeteren van jouw eigen prestaties; Je neemt actief deel aan Scrum meetings en de Backend Guild. Hier ga je werken Voor een snel groeiend bedrijf, in de regio Nieuw Vennep, zijn wij opzoek naar een ervaren Backend Developer. De organisatie is actief in de e-commercebranche en ontzorgt haar klanten middels een

Bekijk vacature »

.NET developer

Functie Jouw team van vier collega .NET developers is verantwoordelijk voor het bouwen van de ETL processen van jouw nieuwe werkgever. Op dit moment wordt de front-end gedaan door een extern team van professionals. Echter wilt jouw nieuwe werkgever graag intern deze kennis uitbreiden en heeft dan ook de ambitie om dit voor het eind van het jaar intern te gaan aanpakken. Dit betekend dat jij als .NET ontwikkelaar de ideale kans krijgt om jezelf samen met jouw collega’s te ontwikkelen als full stack developer. Als .NET ontwikkelaar werk jij bij deze gave werkgever met C# .NET, SQL, JavaScript, REST

Bekijk vacature »

.NET developer WO niveau voor predictive software

Bedrijfsomschrijving Dit bedrijf uit Den Bosch is om precies te zijn 15 medewerkers groot en ze ontwikkelen (predicitve) planning software. Dit doen zij voor allerlei mooie en bekende organisaties (bierbrouwerijen, gemeentes, oliemaatschappijen en diverse multinationals). Wegens meer en grotere vraag vanuit de klanten komen er nu posities vrij voor onder andere een .NET developer. Het bedrijf is goed met openbaar vervoer te bereiken. Functieomschrijving Je komt hier te werken in een team van 3 .NET developers en bent betrokken bij het gehele ontwikkelproces. Dus van idee naar ontwerp en van ontwikkeling tot testen en implementatie. Bij voorkeur ben je niet

Bekijk vacature »

Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Als developer bouw je in DevOps teams aan enterprise applicaties, nieuwe IOT, Chatbots of AI oplossingen. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren in dit vakgebied. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij vorig jaar Microsoft Partner of the year geworden.

Bekijk vacature »

IoT Developer

Ben jij innovatief, heb jij passie voor energie en ben je data gedreven? Bouw dan mee aan IoT binnen Bredenoord. Samen met een gedreven team werk jij aan mooie technische en innovatieve oplossingen. Wat houdt de functie van IoT Developer in? Binnen Bredenoord zijn wij momenteel volop in ontwikkeling met ons IoT platform. Als uitbreiding van ons team zijn wij op zoek naar een IoT Developer. Je zal in projectverband meehelpen met het implementeren van IoT vraagstukken binnen Bredenoord. Als IoT Developer op onze R&D-afdeling word je verantwoordelijk voor het verder inrichten en beheren van ons nieuwe IoT platform. Dat

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Rotterdam! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

Front-end developer - working on software for arou

Functie They have recently started looking for an experienced Front-end (mobile/app) developer. Because of the short lines within the team, they are also looking for someone who can communicate with the service desk, sales and support for technical questions. You will join their IT team consisting of about 10 colleagues divided over two teams in rooms opposite each other. Half of these are involved in their front-end. You will work together with, among others, the Architect, 1 senior, 1 junior and there is a Team Leader. In terms of technology, they work with a unique tech-stack, particularly because of the

Bekijk vacature »

Medior/Senior Python developer (Django)

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 werken ze met pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Er is een kwaliteitsfocus en dan biedt ruimte om verbeteringen echt door te voeren binnen de gehele

Bekijk vacature »

Back end developer

Functie Jij als full stack 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 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk 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. De technische uitdaging momenteel is dat

Bekijk vacature »

C#.NET/Unity Developer

Functieomschrijving Voor een gewaardeerde werkgever in de omgeving van Breda zijn wij op zoek naar een software ontwikkelaar. Dit bedrijf houdt zich bezig met de ontwikkeling van WMS Software (C#/Unity & SQL). Past dit bij jou? Lees snel verder! Jouw werkzaamheden zullen er als volgt uitzien: Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van processen; Samen met 6 applicatieontwikkelaars hebben jullie de verantwoordelijkheid voor de uitbreiding en ontwikkeling van de webapplicaties; Het uitvoeren van updates/aanpassingen aan de huidig draaiende applicaties; Je bent een luisterend oor naar klanten en vertaalt hun wensen door naar bruikbare software. Bedrijfsprofiel Wie

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

06/05/2024 15:46:11
 
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.