как я могу передать переменную php из моего выбора в jquery? - PullRequest
3 голосов
/ 20 января 2020

У меня есть следующий код для загрузки всех стран на моем сайте:

$(document).ready(function() {
  $.ajax({
    type: 'GET',
    url: '/comunidades',

    success: function(response) {
      $("#cbx_comunidad").empty();
      // console.log(response);
      $("#cbx_comunidad").prepend("<option value='' selected='selected'>Seleccione Comunidad</option>");
      for (i = 0; i < response.length; i++) {
        $("#cbx_comunidad").append("<option value='" + "rellena una opcion" + "</option>");
        //console.log('response' + response[i].id);
        $("#cbx_comunidad").append("<option value='" + response[i].id + "'>" + response[i].comunidad + "</option>");
      }
    }
  });
});

И с этой загрузкой все мои провинции на моем сайте:

$('#cbx_comunidad').on('change', function(event) {
  $.ajax({
    type: 'GET',
    url: '/provincias/' + event.target.value,

    success: function(response) {
      $("#cbx_provincia").empty();
      // console.log(response);
      $("#cbx_provincia").prepend("<option value='' selected='selected'>Seleccione Provincia</option>");
      for (i = 0; i < response.length; i++) {
        $("#cbx_provincia").append("<option value='" + "rellena una opcion" + "</option>");
        $("#cbx_provincia").append("<option value='" + response[i].id + "'>" + response[i].provincia + "</option>");
      }
    }   
  });
});

Я хочу установить значение по умолчанию из выберите вот так:

function setDefault(defValue) {
  alert(defValue);
  $('#cbx_comunidad option').each(function () {
    if (($(this).attr('value')) === defValue) {
      $(this).attr('selected', 'selected');
    }    
  });
}

и в моем php коде мне нужно что-то похожее на следующее:

<label for="cbx_comunidad">Seleccione Comunidad:</label>
$usercomunidad = $user->comunidad_id
<select onload="setDefault($user->comunidad_id)"
        class="form-control @error('cbx_comunidad') is-invalid @enderror"
        name="cbx_comunidad"
        id="cbx_comunidad"
        required></select>

Это возможно иметь триггер для передачи моей переменной php на мой jquery код? Как выбрать значение по умолчанию для обновления вида?

Ответы [ 3 ]

1 голос
/ 20 января 2020

Вам необходимо отобразить переменные php, если вы планируете передавать их как JS параметры. (onload="setDefault({{ $user->comunidad_id }})")

Вместо этого вы также можете использовать атрибут data-*.

<label for="cbx_comunidad">Seleccione Comunidad:</label>
<select class="form-control @error('cbx_comunidad') is-invalid @enderror"
        name="cbx_comunidad"
        id="cbx_comunidad"
        data-id="{{ $user->comunidad_id ?: '' }}"
        required></select>
$('#cbx_comunidad').on('change', function(event) {
  $.ajax({
    type: 'GET',
    url: '/provincias/' + event.target.value,

    success: function(response) {
      let value = $("#cbx_provincia").attr('data-id');
      $("#cbx_provincia").empty();
      $("#cbx_provincia").prepend("<option disabled "+(value ? '' : 'selected')+">Seleccione Provincia</option>");
      for (i = 0; i < response.length; i++) {
        $("#cbx_provincia").append("<option value='" + response[i].id + "'" + (value == response[i].id ? 'selected' : '') + ">" + response[i].provincia + "</option>");
      }
    }   
  });
});
0 голосов
/ 20 января 2020

Вы загружаете выбор из ajax при загрузке документа, но пытаетесь установить выбранное значение, как только загружен элемент выбора. Это означает, что выбор пуст и не имеет вариантов для сопоставления в то время. Вы должны попытаться сделать выбор ПОСЛЕ добавления / добавления всех параметров. Поэтому в select используйте data-id, чтобы сохранить выбранное значение и прочитать это значение, чтобы предварительно выбрать опцию ПОСЛЕ добавления всех опций.

$(document).ready(function() {
  $.ajax({
    type: 'GET',
    url: '/comunidades',

    success: function(response) {
      $("#cbx_comunidad").empty();
      // console.log(response);
      $("#cbx_comunidad").prepend("<option value='' selected='selected'>Seleccione Comunidad</option>");
      for (i = 0; i < response.length; i++) {
        $("#cbx_comunidad").append("<option value='" + "rellena una opcion" + "</option>");
        //console.log('response' + response[i].id);
        $("#cbx_comunidad").append("<option value='" + response[i].id + "'>" + response[i].comunidad + "</option>");
      }

      $("#cbx_comunidad").val($("#cbx_comunidad").data('id'));
    }
  });
});

И в вашем html:

<select data-id="$user->comunidad_id"
        class="form-control @error('cbx_comunidad') is-invalid @enderror"
        name="cbx_comunidad"
        id="cbx_comunidad"
        required>
</select>
0 голосов
/ 20 января 2020

Я должен иметь возможность просто распечатать обработанные данные PHP в вашей разметке следующим образом.

<label for="cbx_comunidad">Seleccione Comunidad:</label>
<select onload="setDefault('<?php echo htmlentities($user->comunidad_id, ENT_QUOTES, 'UTF-8'); ?>')" class="form-control @error('cbx_comunidad') is-invalid @enderror" name="cbx_comunidad" id="cbx_comunidad" required>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...