2017-12-01 9 views
0

제출 한 후 각각 $_POST 제출 후 다중 선택이 감소하지만 모든 아약스 응답 색인이 반환됩니다. 이 양식에서는 Empresa의 변경을 트리거하는 이벤트가있어 다른 필드를 모두로드하고 ajax에서 반환 한 PHP 세션의 옵션을 표시합니다.멀티 선택은 각 제출 후 마지막 항목을 선택 해제합니다.

제출할 때마다 세션의 모든 항목이 있지만 각 필드의 마지막 항목은 항상 선택 취소됩니다.

// This code triggers an action in Empresa ... 
$(function($) {$('.dropdown-toggle').dropdown('toggle');}); 

$.ajax({ 
    url: '/ajaxrequests/requestservicos', 
    type: 'POST', dataType: 'json', 
    data: {empresas:empresas}, 
    success: function(retorno){ 
     var servs = retorno.servicos; // [10, 12, 14, 20, 21, 23, 25, 29, 32, 33, 38] 
     var checks = retorno.check; // [10, 12, 14, 20, 21, 23, 25] 
     console.log(retorno); 
     $('#ajax_servico').html(""); 
     $.each(servs, function(valor, chave){ 
      $('#ajax_servico').append($('<option>', { 
       value: valor, 
       text : chave, 
       checked: checks[valor], 
       selected: checks[valor] 
      })); 
     }); 
     $("#ajax_servico").multiselect('destroy'); 
     MultiselectSet($("#ajax_servico")); 
    } 
});   

function MultiselectSet(input){ 
    $(input).multiselect({ 
     includeSelectAllOption: true, 
     nSelectedText: 'selecionados ..', 
     nonSelectedText:'Nenhum selecionado ..', 
     allSelectedText: 'Todos selecionados ..', 
     selectAllText: 'Selecionar todos ..', 
     numberDisplayed: 1, 
    }); 
} 

enter image description here enter image description here

답변

1

회원님이 여기에서하고 싶지만 당신이 선택할 수 검사에 servico의 모든 항목을 원한다면 당신이 시도 할 수 있는지 확인하십시오

$.ajax({ 
    url: '/ajaxrequests/requestservicos', 
    type: 'POST', dataType: 'json', 
    data: {empresas:empresas}, 
}) 
.then(
    function(retorno){ 
    const servs = retorno.servicos, // [10, 12, 14, 20, 21, 23, 25, 29, 32, 33, 38] 
    checks = retorno.check, // [10, 12, 14, 20, 21, 23, 25] 
    $servico = $('#ajax_servico'); 
    console.log(retorno); 
    $servico.html(""); 
    servs.forEach(function(chave,index){ 
     const isInChecks = checks.indexOf(chave)!==-1; 
     $servico.append($('<option>', { 
     value: index, 
     text : chave, 
     checked: isInChecks, 
     selected: isInChecks 
     }));  
    }); 
    $("#ajax_servico").multiselect('destroy'); 
    MultiselectSet($("#ajax_servico")); 
    } 
    ,function(reject){console.error("something went wrong:",reject)} 
); 

I을 왜 배열의 인덱스에 옵션의 값을 설정해야할지 모르겠다면 데이터베이스에있는 항목의 ID로 설정하는 것이 더 좋지 않겠습니까? 옵션의 텍스트를 숫자로 설정 했습니까? 그렇다면 id 및 텍스트의 값을 데이터베이스의 해당 id를 나타내는 텍스트 값으로 설정해야합니다.

+0

코드를 실행하려고하면 jumery 오류가 발생합니다. jQuery.Deferred 예외 : 정의되지 않은 객체 또는 null을 객체로 변환 할 수 없습니다. TypeError : 정의되지 않은 객체 또는 null을 객체로 변환 할 수 없습니다.이 오류와 관련하여 도움을 받으십시오. –

+0

오류의 이미지가 업로드되었습니다 :) –