2014-06-25 4 views
4

У меня есть выпадающий список, когда пользователь выбирает этот параметр, значение передается, но после обновления страницы я хочу сохранить выбранное значение (но теперь они установлены в значение по умолчанию), поэтому пользователь знает, что выбрано , Любая надежда.DropDown потерял выбранные значения после обновления

я знаю, что это может быть дубликатом, но я не найти какой-либо полезный ответ на повторяющиеся вопросы

Мой выпадающий

<select id="Selection"> 
    <option value="">Sort by</option> 
    <option value="0">Code</option> 
    <option value="1">Title A-Z</option> 
    <option value="2">Title Z-A</option> 
    <option value="3">Brand</option> 
    <option value="4">Lowest price</option> 
    <option value="5">Highest price</option> 
    <option value="6">Lowest Quantity</option> 
    <option value="7">Highest Quantity</option> 
</select> 

Jquery

$(document).ready(function() { 
    $("#Selection").change(function() { 
     var item = $(this).find(":selected").val(); 

     $.ajax({ 
      url: "/Cook/AddCookies", 
      data: { item: item }, 
      type: 'POST', 
      // contentType: 'application/json; charset=utf-8', 
      success: function (data) { 

       // Variable data contains the data you get from the action method 
      } 
     }); 
    }); 
+0

Вам нужно будет включать в себя немного больше информации в вашем вопросе. Какие серверные технологии вы используете? Как начинается обратная передача? У вас есть страница с примерами, которую вы можете поделиться? – PriorityMark

+0

thnx plz посмотреть обновленный вопрос @ PriorityMark –

+0

Возможный дубликат [Как получить переменную JS для сохранения значения после обновления страницы?] (Http://stackoverflow.com/questions/16206322/how-to-get-js- variable-to-keep-value-after-page-refresh) – PaulBinder

ответ

-1

решенный

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script> 

<select id="Selection"> 
    <option value="">Sort by</option> 
    <option value="0">Code</option> 
    <option value="1">Title A-Z</option> 
    <option value="2">Title Z-A</option> 
    <option value="3">Brand</option> 
    <option value="4">Lowest price</option> 
    <option value="5">Highest price</option> 
    <option value="6">Lowest Quantity</option> 
    <option value="7">Highest Quantity</option> 
</select> 

<script> 
    $(document).ready(function() { 
     var val = getCookie("TestCookie"); 
     $("#Selection").val(val); 

     $("#Selection").change(function() { 
      var item = $(this).find(":selected").val(); 

      $.ajax({ 
       url: "/Cook/AddCookies", 
       data: { item: item }, 
       type: 'POST', 
       success: function (data) { 
       } 
      }); 
     }); 

    }); 

    function getCookie(name) { 
     var re = new RegExp(name + "=([^;]+)"); 
     var value = re.exec(document.cookie); 
     return (value != null) ? unescape(value[1]) : null; 
    } 
</script> 
+0

Это не показывает полный ответ (например, как AddCookies заполняет файл cookie), а также использует файл cookie для хранения того, что лучше подходит для локального хранилища. – PaulBinder

1

Конечно, я могу привести пример , Поскольку вы сказали «метод действия», я предполагаю, что вы используете MVC asp.net. Извините, если это неверно. Мой пример будет использовать его.

Посмотреть

<select id="Selection"> 
    <option value="">Sort by</option> 
    <option value="0">Code</option> 
    <option value="1">Title A-Z</option> 
    <option value="2">Title Z-A</option> 
    <option value="3">Brand</option> 
    <option value="4">Lowest price</option> 
    <option value="5">Highest price</option> 
    <option value="6">Lowest Quantity</option> 
    <option value="7">Highest Quantity</option> 
</select> 

<script> 
    $(document).ready(function() { 
     var someVarName = JSON.parse(localStorage.getItem("someVarName")); 
     if (someVarName.itemNumber != null) { 
      var number = parseInt(someVarName.itemNumber) + 1; 
      $('select>option:eq(' + number +')').attr('selected', true); 
     } 

     $("#Selection").change(function() { 
      var item = $(this).find(":selected").val(); 

      $.ajax({ 
       url: "/Home/MyAction", 
       data: { item: item }, 
       type: 'POST', 
       // contentType: 'application/json; charset=utf-8', 
       success: function (data) { 
        localStorage.setItem("someVarName", JSON.stringify(data)); 
       } 
      }); 
     }); 
    }); 
</script> 

Контроллер

[HttpPost] 
    public JsonResult MyAction(string item) 
    { 
     return Json(new {itemNumber = item, value = "your data"}); 
    } 

Там будет четко должны быть очистка и обработка ошибок. Однако это должно привести вас к правильному пути.

Также обратите внимание, что я просто использовал ajax для синхронизации с вашим образцом, предполагая, что вы выполняете какую-то обработку со значением, переданным на сервер. Если вы не можете легко сделать что-то вроде этого

<select id="Selection"> 
    <option value="">Sort by</option> 
    <option value="0">Code</option> 
    <option value="1">Title A-Z</option> 
    <option value="2">Title Z-A</option> 
    <option value="3">Brand</option> 
    <option value="4">Lowest price</option> 
    <option value="5">Highest price</option> 
    <option value="6">Lowest Quantity</option> 
    <option value="7">Highest Quantity</option> 
</select> 

<script> 
    $(document).ready(function() { 
     var someVarName = localStorage.getItem("someVarName"); 
     if (someVarName != null) { 
      var number = parseInt(someVarName) + 1; 
      $('select>option:eq(' + number + ')').attr('selected', true); 
     } 

     $("#Selection").change(function() { 
      var item = $(this).find(":selected").val(); 
      localStorage.setItem("someVarName", item); 
     }); 
    }); 
</script> 
+0

Я РЕШЕННЫЙ ИСПОЛЬЗОВАНИЕ COOKIES, –

+0

Если эти данные являются клиентской стороной, то localstorage намного лучше, чем хранить его через cookie. См. Это для деталей: http://stackoverflow.com/questions/3220660/local-storage-vs-cookies – PaulBinder

+0

Это не может работать в примере скрипта JS. В связи с тем, что мы используем localstorage. Также не будет работать ajax, поскольку у нас нет реального сервера для подключения. Покажите свой код, который не работает, и связанные с ним методы контроллера. , – PaulBinder

Смежные вопросы