2015-05-12 5 views
0

Я хочу сохранить значение раскрывающегося списка при отправке формы. У меня есть два выпадающих раздела - Отдел и Проект взаимосвязаны через AJAX. Когда я отправляю, страница перезагружается, и по умолчанию ценности отдела и проекта выходят за рамки всех департаментов и всех проектов, однако я хочу сохранить значение, выбранное пользователем.PHP AJAX JSON Выпадающее значение при отправке формы

Это код. Простите остальную часть кода, если он отсутствует, поскольку я показываю только требуемый код.

<html><head><script type="text/Javascript"> 

     function showdept(){ 
      $('#deptdropdown').empty(); 
      $('#deptdropdown').append("<option value='0'> All Departments </option>"); 
      $('#projectdropdown').append("<option value='0'> All Projects </option>"); 
      $.ajax({ 
       type:"POST", 
       url:"departmentdropdown.php", 
       contentType:"application/json; charset:utf-8", 
       dataType:"json", 
       success: function(data){ 
        $('#deptdropdown').empty(); 
        $('#deptdropdown').append("<option value='0'> All Departments </option>"); 
        $.each(data,function(i,item){ 
         $('#deptdropdown').append('<option value="'+ data[i].deptID +'">'+ data[i].deptname +'</option>'); 
        }); 
       }, 
       complete: function(){ 
       } 
      }); 
     } 

     function showproject(deptID){  
      $('#projectdropdown').empty(); 
      $('#projectdropdown').append("<option value='0'> All Projects </option>");   
      $.ajax({ 
       type:"POST", 
       url:"projectdropdown.php?dID="+deptID, 
       contentType:"application/json; charset:utf-8", 
       dataType:"json", 
       success: function(data){ 
        $('#projectdropdown').empty(); 
        $('#projectdropdown').append("<option value='0'> All Projects </option>"); 
        $.each(data,function(i,item){ 
         $('#projectdropdown').append('<option value="'+ data[i].proID +'">'+ data[i].projectname+'</option>'); 
        }); 
       }, 
       complete: function(){ 
       } 
      }); 
     } 

     $(document).ready(function(){    //Initial call to the functions. 

      showdept();        //Shows all the departments. 

      $("#deptdropdown").change(function(){ //When department changes, call the project function 
       var deptid=$("#deptdropdown").val(); 
       showproject(deptid); 
      });</script></head><body><div id="container" style="min-height:500px; border-bottom:2px solid grey"><div id="verticaldropdown" style="width:200px; background:yellow; border-right: 1px solid grey; min-height:500px; float:left"> 
    <form method="POST" action=""> 
     <div align="center"> 
     <div>Department</div> 
     <div><select name="dept_selected" style="width:160px" id="deptdropdown"></select></div> 
     </div> 
     <br /> 
     <div align="center"> 
     <div>Project</div> 
     <div><select name="project_selected" style="width:160px" id="projectdropdown"></select></div> 
     </div> 
     <br /> 
     <div align="center"> 
     <input type=submit value='Go' name='showcompliance'> 
     </div> 
    </form> 
    </div> 
</div> 
</body> 
</html> 
+0

вы можете взглянуть на эту тему http://stackoverflow.com/questions/11455199/retain-select-dropdown-value-after-an-ajax-refresh, это может помочь вам начать работу, просто отредактируйте свою сообщение с вещами, которые вы пробовали – Daniel

ответ

0

Вам нужны DEPT и проектные идентификаторы для выбора Выбирается:

$.each(data,function(i,item){ 
if(data[i].deptID==choosen_dept){ 
    $('#deptdropdown').append('<option value="'+ data[i].deptID +'" selected>'+ data[i].deptname +'</option>'); 
}else{ 
    $('#deptdropdown').append('<option value="'+ data[i].deptID +'">'+ data[i].deptname +'</option>'); 
} 
}); 
+0

Большое спасибо, я сравнил данные [i] .deptID с $ _POST [dept_value], и ​​он сработал. – Maulik

+0

Возможно, вещь ollierexx говорит, что это тоже хорошее решение, нарисуйте в php и верните его напрямую. Как вы предпочитаете, оба работают. – jpintor

0

У вас есть 2 варианта, чтобы исправить эту проблему:
1) Вы можете представить форму с помощью AJAX, и это не очистить выбор в форме
2) Вы можете использовать PHP для предварительного заполнения значений в выпадающих списках после обновления страницы.
Пожалуйста, выберите один, и я отредактирую свой ответ соответственно.

+0

Я мог бы сделать выбор, используя приведенный выше фрагмент кода, но мне любопытно узнать, как я могу отправить форму с помощью AJAX? Пожалуйста, поделитесь им. – Maulik

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