2016-11-20 7 views
0

私はオプションのリストを持っています。 1つのオプションをクリックすると、クリックされたリンクのdata-id値でlocalStorage値を更新し、Ajax呼び出しによって更新されたlocalStorage値を送信したいが、localStorage値が実際に更新されないという問題がある。ウィンドウが更新されます。localStorage変数を更新してAjaxに送信する方法

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呼び出し

  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

Clickハンドラで唯一の更新が行われたように見えるので、実際には意味をなさない。あなたはどうやってこれを確認していますか?なぜ適切なlocalStorage APIメソッドを使用していないのですか? – charlietfl

+0

localStorageが更新された後に変数を出力すると、ウィンドウを更新しない限り、新しい値が表示されません。 ajaxコールはまだ古い値を取得しています。 – obreezy

+0

それを別の引数として関数に渡すのはなぜですか? 'location.reload()'のコメントを外すと、ページがリロードされてからajaxが呼び出されます。 – charlietfl

答えて

0

はこれを試してみてください:

ウィンドウ全体のリフレッシュなしに更新のlocalStorage値を持ってする方法はあります
$(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 
}); 
関連する問題