2016-11-20 2 views
0

Ich habe eine Liste von Optionen. Wenn Sie auf eine Option klicken, möchte ich den localStorage-Wert mit dem Daten-ID-Wert des angeklickten Links aktualisieren und dann den aktualisierten localStorage-Wert über einen Ajax-Aufruf senden. Das Problem ist jedoch, dass der localStorage-Wert nicht aktualisiert wird Fenster wird aktualisiert. Gibt es einen Weg, um die localstorage Wert ohne eine vollständige Fenster refresh aktualisiert haben:Wie lokale Variable aktualisieren und an Ajax Anruf senden

HTML

<div class="phonechoice" data-id="1">Option 1</div> 
<div class="phonechoice" data-id="2">Option 2</div> 

JQUERY

//Update localStorage variable on click and send to ajax call 

$(document).on("click", '.phonechoice', function(){ 
    var mcid=$(this).data("id"); 
    localStorage.mastercaseid = mcid; // CHANGE LOCALSTORAGE VALUE 
    // location.reload(); //WANT TO STOP THIS RELOAD 
    getresult(url_pullrecords); //execute ajax call 
    }); 

Ajax-Aufruf

  function getresult(url_pullrecords) { 
      $.ajax 
      ({ 
       context: this, 
       crossDomain: true, 
       url: url_pullrecords, 
       type: "GET", 
       data: {mcid:localStorage.mastercaseid}, 
       //THIS VALUE ABOVE DOESN'T GET UPDATED UNLESS WINDOW IS REFRESHED 
       beforeSend: function(){ 
       }, 
       success: function(data){ 
        $(".btnholder").before(data); 
       }     
      }); 
      } 
+0

Wirklich nicht sinnvoll, da es scheint, dass das einzige Update im Click-Handler durchgeführt wird. Wie verifizierst du das alles? Und warum verwenden Sie nicht die richtigen localStorage-API-Methoden? – charlietfl

+0

Ich drucke die Variable aus, nachdem das localStorage aktualisiert wurde und es zeigt den neuen Wert nicht an, wenn ich das Fenster nicht aktualisiere. Der Ajax-Aufruf erhält immer noch den älteren Wert. – obreezy

+0

warum gibst du es nicht einfach als weiteres Argument in die Funktion? Auch wenn Sie 'location.reload()' auskommentieren, wird die Seite neu geladen, bevor der Ajax aufgerufen wird – charlietfl

Antwort

0

Try this:

$(document).on("click", '.phonechoice', function(e){ 
    var mcid=$(this).data("id"); 
    localStorage.setItem("mastercaseid", mcid); // CHANGE LOCALSTORAGE VALUE 
     // location.reload(); //WANT TO STOP THIS RELOAD 
    e.stopPropagation(); 
    getresult(); //execute ajax call 
});