How to add a PHP variable in JavaScript?

1

I need to play a Volume variable within a Option that is, the person selects a category and as that category appears the items in the list in front of the items I need to show the volume, I am not able to make this volume appear in front of the title.

PHP variable ex:

<?php echo $objProduto->volume ?>

<div class="col-sm-3">
    <select name="id_produto_temp" class="form-control" id="id_produto_temp" onChange="changeUser(this.value);" required>
          <option id="opcoes" value="">Produto </option>
    </select>

</div>

JavaScript:

function processXML(obj) {

    //pega a tag cliente
    var dataArray = obj.getElementsByTagName("produto");

    //total de elementos contidos na tag cliente
    if (dataArray.length > 0) {
        //percorre o arquivo XML paara extrair os dados
        for (var i = 0; i < dataArray.length; i++) {
            var item = dataArray[i];
            //contéudo dos campos no arquivo XML
            var codigo = item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
            var descricao = item.getElementsByTagName("descricao")[0].firstChild.nodeValue;

            idOpcao.innerHTML = "Selecione um produto abaixo";

            //AQUI PRECISO JOGAR A VARIAVEL VOLUME NA FRENTE DE DESCRIÇÃO, OBS: JA TENTEI COLOCAR novo.text = descricao + volume só que aparece um 3 na frente de todos os textos

            var novo = document.createElement("option");
            //atribui um ID a esse elemento
            novo.setAttribute("id", "opcoes");
            //atribui um valor 
            novo.value = codigo;
            //atribui um texto
            novo.text = descricao;

            //finalmente adiciona o novo elemento
            document.frmPedidoProduto.id_produto_temp.options.add(novo);
        }
    } else {
        //caso o XML volte vazio, imprime a mensagem abaixo
        idOpcao.innerHTML = "Nenhuma familia relacionada";
    }
}
    
asked by anonymous 30.08.2016 / 15:53

2 answers

1

This example shows the result in JavaScript, using json_encode , of an associative array in PHP.

Note that the associative array in PHP becomes a literal object in JavaScript.

Array in PHP:

<?php
    $livro = array(
        "titulo" => "JavaScript: The Definitive Guide",
        "autor" => "David Flanagan",
        "edicao" => 6
    );
?>

Pass variable to JavaScript:

<script type="text/javascript">
    var livro = <?php echo json_encode($livro, JSON_PRETTY_PRINT) ?>;
    /* var livro = {
        "titulo": "JavaScript: The Definitive Guide",
        "autor": "David Flanagan",
        "edicao": 6
    }; */
    alert(livro.titulo);
</script>

The JSON_PRETTY_PRINT option as the second argument of the json_encode function to return the result in a readable way.

You can access the properties of the object by using the . dot syntax as you can see in the alert or right-brained syntax: livro['titulo'] .

    
30.08.2016 / 16:32
0

To using the following condition, but is not pulling the Volume Value.

function processXML (obj) {

      var dataArray   = obj.getElementsByTagName("produto");

      //total de elementos contidos na tag cliente
      if(dataArray.length > 0)
      {
         //percorre o arquivo XML paara extrair os dados
         for(var i = 0 ; i < dataArray.length ; i++)
         {
            var item = dataArray[i];
            //contéudo dos campos no arquivo XML
            var codigo    =  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
            var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
            var volume = "<?php echo $objProduto->volume; ?>";

            idOpcao.innerHTML = "Selecione um produto abaixo";

            //cria um novo option dinamicamente  
            var novo = document.createElement("option");
                //atribui um ID a esse elemento
                novo.setAttribute("id", "opcoes");
                //atribui um valor 
                novo.value = codigo;
                //atribui um texto
                novo.text  = descricao + " <?php 
                  if($reg_des_prod[tp_categoria] != 1)
          {
            if(!empty($objProduto->volume)) 
            {

              echo " - ".$objProduto->volume." L";
            }
          }
         ?>" ;




                //finalmente adiciona o novo elemento
                document.frmPedidoProduto.id_produto_temp.options.add(novo);
         }
      }
      else
      {
        //caso o XML volte vazio, imprime a mensagem abaixo
        idOpcao.innerHTML = "Nenhuma familia relacionada";
      }   
    }
    
30.08.2016 / 17:35