Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Elemento Dom

Srs, boa tarde.

Eu estou tentando usar dentro do meu ajax o seguinte código jquery: $("input[ name = 'itilobserver[users_id]' ]").val();

No console do browser ele funciona perfeitamente, porem dentro do meu código PHP que tenho um bloco de código entre aspas o erro: "Uncaught SyntaxError: Unexpected end of input" é apresentado.

Segue meu código PHP, a logica não é importante, talvez eu não fechei alguma chave, aspas simples etc...

$action = "        
        var nameOfPost = '".substr($javascriptArray[0], 1,12)."';
        var simpleFormValue = '".preg_replace("/[^0-9]/", "", $javascriptArray[1])."';

        $(\"input[ name = '_itil_observer[users_id]' ]\").val();


        $.ajax
        ({  
            method: 'POST',
            url: '/glpi/front/ticket.form.php',
            data:{addme_assign: nameOfPost, tickets_id: '".$_GET['id']."', _glpi_simple_form: simpleFormValue},
            dataType: 'html',    
            async: true,
            success: function()
            {                
              function builtInput(nameOfInput, valueOfInput)
              {
                let input =  document.createElement('input');
                    input.setAttribute('hidden', 'text');
                    input.setAttribute('name', nameOfInput);
                    input.setAttribute('value', valueOfInput);

                return input;
              }

              $('form[name = form_ticket]').append(builtInput('addme_assign', '".substr($javascriptArray[0], 1,12)."'));
              $('form[name = form_ticket]').append(builtInput('tickets_id', '".$_GET['id']."'));
              $('form[name = form_ticket]').append(builtInput('glpi_csrf_token', '".$fields['_glpi_csrf_token']."'));
              $('form[name = form_ticket]').append(builtInput('_glpi_simple_form', '".$fields['_glpi_simple_form']."'));
              $('form[name = form_ticket]').append(builtInput('update', 'Salvar'));
              $('form[name = form_ticket]').submit();
            }          
          });";
3 respostas

Supondo que itilobserver[users_id] seja uma variável vc deve concatenar com a string do seletor, tente assim:

$("input[name = '" . _itil_observer[users_id] . "']").val();

Oi Gean, bom dia.

Na verdade é um elemento do dom. Eu consegui pegar todos, apenas esse elemento. Eu acho que é por causa do "" ele é o único que tem "".

solução

Srs, boa tarde.

Eu consegui resolver pegando os elementos antes de executar o código Ajax. Deu certo. Eu agradeço a ajuda do sr gean.

//Allied: Atualização do form quando um tecnico é atribuido
      echo "<script>   
        $('form[name = form_ticket]').click(function()
        {              
          function builtInput(nameOfInput, valueOfInput)
          {
            let input =  document.createElement('input');
                input.setAttribute('hidden', 'text');
                input.setAttribute('name', nameOfInput);
                input.setAttribute('value', valueOfInput);

            return input;
          } 

          $('form[name = form_ticket]').append(builtInput('user_obs_type', $('select[name=\"_itil_observer[_type]\"]').val()));   
          $('form[name = form_ticket]').append(builtInput('user_obs_id', $('input[name=\"_itil_observer[users_id]\"]').val()));              

        });     
      </script>";