Yii Framework Forum: Chtml::button Com Duas Ações - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

Chtml::button Com Duas Ações Rate Topic: -----

#1 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 05 October 2012 - 06:56 AM

Pessoal, bom dia!
Estive procurando alguma solução para meu problema em outros tópicos, porém não encontrei.
Bem, meu caso é o seguinte:
Tenho um CHtml::button que chama o método no controller, faz a busca no banco de acordo com parâmetros passados e imprime dois valores em campos hidden. Com esses valores eu uso javascript para jogar os dados nos inputs, porém necessito clicar duas vezes no botão para que ele funcione.
Com faria para ao clicar no botão ele ja busque os dados e já utilize o javascript para preencher os inputs sem a necessidade de clicar duas vezes no botão?
Existe alguma forma de vincular o botão ao controller e a um javascript em uma mesma ação? Como seria?
Dessa forma que estou fazendo está correta?
Segue o código até então:

_form.php

 <div class="row">
            <?Php
                Yii::app()->clientScript->registerScript('bt'," 
                 $(document).ready(function() {
               
                 $('#Requisicao_requisicao_terceiro_0').click(function(){
                    $('.requisicao_terceiro').show();
                     
                  })
               
                  $('#Requisicao_requisicao_terceiro_1').click(function(){
                     $('.requisicao_terceiro').hide();
                  })
                  
                   $('#yt0').click(function(){
                   
                      var primeirainicial = 0+$('#primeira_requisicao_inicial').val();
                      var primeirafinal =   0+$('#primeira_requisicao_final').val();
                      var proximainicial =  0+$('#Requisicao_proxima_requisicao_inicial').val();
                      var proximafinal =    0+$('#Requisicao_proxima_requisicao_final').val();
                      var seriesdisponiveis = $('#series_disponiveis').val();
                      var quantidadefolhas =  $('#Requisicao_qtde_folhas_requisicao').val();
                      var quantidadedisponivel =  $('#quantidadedisponivel').val();
                     
                    
                     
                     if(typeof proximainicial=='undefined'  || typeof proximainicial=='undefined'){
                   
                    
                        var numinicialrequisicao = primeirainicial;
                        var numfinalrequisicao = primeirafinal;
                      
                      }else{
                        
                         var numinicialrequisicao = proximainicial;
                         var numfinalrequisicao = proximafinal;

                      }
        
                      $('#Requisicao_num_requisicao_inicial_medico').val(numinicialrequisicao);
                      $('#Requisicao_num_requisicao_final_medico').val(numfinalrequisicao);
                      $('#Requisicao_id_num_sequencial').val(seriesdisponiveis);
                   
                  })      
                  
                  
                  })",CClientScript::POS_READY); 
                    echo CHtml::label('Faixas | Séries | Quantidades Disponíveis', 'series_disponiveis');
                    //empty since it will be filled by the other dropdown
                    echo CHtml::dropDownList('series_disponiveis','', array('empty' => 'Escolha um Tipo de Receita', 
                    ));
                   
                    echo CHtml::button('Buscar', array(
                              'ajax' => array(
                                  'type' => 'POST',
                                  'url' => CController::createUrl('Requisicao/buscaultimo'),
                                  'update' => '#param_id',
                              
                              )
                          ));
                    
                     
         
                       ?>
     
        </div>
        
        <div id="param_id" class="row">

        </div>
           
        <div class="row">
		<?php echo $form->labelEx($model,'num_requisicao_inicial_medico'); ?>
		<?php echo $form->textField($model,'num_requisicao_inicial_medico',   array('readonly' => true, 'size' => 8, 'maxlength'=>8)); ?>
		<?php echo $form->error($model,'num_requisicao_inicial_medico'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'num_requisicao_final_medico'); ?>
		<?php echo $form->textField($model,'num_requisicao_final_medico', array('readonly' => true, 'size' => 8, 'maxlength'=>8)); ?>
		<?php echo $form->error($model,'num_requisicao_final_medico'); ?>
	</div>


RequisicaoController.php
public function actionbuscaultimo() {
   
       
             $parametro = ((int) $_POST['Requisicao']['qtde_folhas_requisicao']);
     
             $parametro2 = (int)$_POST['series_disponiveis'];
        
           //   dd($parametro);
       
//        $posts = Requisicao::model()->findBySql("SELECT (MAX(req.num_requisicao_final_medico)+1) as nova_requisicao_inicial, (MAX(req.num_requisicao_final_medico)+:keyword) as nova_requisicao_final
//                                                FROM 
//                                                sch_scspm.tb_num_sequencial ns, sch_scspm.tb_requisicao req
//                                                                WHERE 
//                                                                ns.id_num_sequencial = req.id_num_sequencial
//
//                                                                 AND
//                                                                        ns.id_num_sequencial = :keyword2", array(':keyword' => $parametro, ':keyword2' => $parametro2));
//      
   
        
        $posts = Requisicao::model()->findBySql("SELECT (MAX(req.num_requisicao_final_medico)+1) as proxima_requisicao_inicial, (MAX(req.num_requisicao_final_medico)+:keyword) as proxima_requisicao_final,
ns.num_sequencial_inicial as primeira_requisicao_inicial, ns.num_sequencial_inicial+:keyword-1 as primeira_requisicao_final
                                                FROM 
                                                sch_scspm.tb_num_sequencial ns
                                                LEFT JOIN sch_scspm.tb_requisicao req
                                                                ON 
                                                                (ns.id_num_sequencial = req.id_num_sequencial)

                                                                 WHERE
                                                                        ns.id_num_sequencial = :keyword2
							GROUP BY ns.num_sequencial_inicial, ns.num_sequencial_final", array(':keyword' => $parametro, ':keyword2' => $parametro2));
        
        // var_dump($posts);
        
      $posts->primeira_requisicao_inicial = (int) $posts->primeira_requisicao_inicial;
    
      $posts->primeira_requisicao_final =  (int) $posts->primeira_requisicao_final;
         
      $posts->proxima_requisicao_inicial = (int) $posts->proxima_requisicao_inicial;
      
      $posts->proxima_requisicao_final = (int) $posts->proxima_requisicao_final;
        
    
      
      if ($posts->proxima_requisicao_inicial ==  NULL || $posts->proxima_requisicao_final ==  NULL) {
             //não existe nenhuma requisição
             //echo CHtml::label('Faixa Liberada para o Médico', 'primeira_requisicao_inicial');
             echo CHtml::HiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8), array('id' => 'primeira_requisicao_inicial') );
             echo CHtml::HiddenField('primeira_requisicao_final', $posts->primeira_requisicao_final,  array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8), array('id' => 'primeira_requisicao_final') );
             echo 'Faixa Calculada!';
            
          
     } else {
            //existe requisicao
            //echo CHtml::label('Faixa Liberada para o Médico', 'proxima_requisicao_inicial');
            echo CHtml::HiddenField('Requisicao[proxima_requisicao_inicial]', $posts->proxima_requisicao_inicial, array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('id' => 'proxima_requisicao_inicial')) ;
            echo CHtml::HiddenField('Requisicao[proxima_requisicao_final]', $posts->proxima_requisicao_final, array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('id' => 'proxima_requisicao_final'));
            echo 'Faixa Calculada!';
            
          
            
     }


Desculpem, más ainda estou iniciando no Yii
0

#2 User is offline   andredelorme 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 30-April 09

Posted 05 October 2012 - 11:24 AM

samjf,

Acho que com a configuração success da função ajax você pode conseguir.

http://api.jquery.com/jQuery.ajax/
0

#3 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 05 October 2012 - 12:47 PM

View Postandredelorme, on 05 October 2012 - 11:24 AM, said:

samjf,

Acho que com a configuração success da função ajax você pode conseguir.

http://api.jquery.com/jQuery.ajax/


Desculpe a ignorância, más como seria esse success?
Inseri como parâmetro do botão e não funcionou.
Poderia me passsar um exemplo?

Fiz assim:

                    echo CHtml::button('Buscar', array(
                              'ajax' => array(
                                  'type' => 'POST',
                                  'url' => CController::createUrl('Requisicao/buscaultimo'),
                                  'update' => '#param_id',
                                  'success' =>' $(#yt0).click(function(){
                   
                      var primeirainicial = 0+$(#primeira_requisicao_inicial).val();
                      var primeirafinal =   0+$(#primeira_requisicao_final).val();
                      var proximainicial =  0+$(#Requisicao_proxima_requisicao_inicial).val();
                      var proximafinal =    0+$(#Requisicao_proxima_requisicao_final).val();
                      var seriesdisponiveis = $(#series_disponiveis).val();
                      var quantidadefolhas =  $(#Requisicao_qtde_folhas_requisicao).val();
                      var quantidadedisponivel =  $(#quantidadedisponivel).val();
                     
                    
                     
                     if(typeof proximainicial==undefined  || typeof proximainicial==undefined){
                   
                    
                        var numinicialrequisicao = primeirainicial;
                        var numfinalrequisicao = primeirafinal;
                      
                      }else{
                        
                         var numinicialrequisicao = proximainicial;
                         var numfinalrequisicao = proximafinal;

                      }
        
                      $(#Requisicao_num_requisicao_inicial_medico).val(numinicialrequisicao);
                      $(#Requisicao_num_requisicao_final_medico).val(numfinalrequisicao);
                      $(#Requisicao_id_num_sequencial).val(seriesdisponiveis);
                   
                  })     '
                              )
                          ));

0

#4 User is offline   Lothor 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 147
  • Joined: 05-August 11
  • Location:Brazil

Posted 08 October 2012 - 02:08 PM

samjf, tenta jogar o código do success dentro de uma função.

Assim:

echo CHtml::button('Buscar', array(
	'ajax' => array(
		'type' => 'POST',
		'url' => CController::createUrl('Requisicao/buscaultimo'),
		'update' => '#param_id',
		'success' => 'function() { // Apenas coloquei seu código dentro desta função.
			$(#yt0).click(function(){
				var primeirainicial = 0+$(#primeira_requisicao_inicial).val();
				var primeirafinal =   0+$(#primeira_requisicao_final).val();
				var proximainicial =  0+$(#Requisicao_proxima_requisicao_inicial).val();
				var proximafinal =    0+$(#Requisicao_proxima_requisicao_final).val();
				var seriesdisponiveis = $(#series_disponiveis).val();
				var quantidadefolhas =  $(#Requisicao_qtde_folhas_requisicao).val();
				var quantidadedisponivel =  $(#quantidadedisponivel).val();

				if(typeof proximainicial==undefined  || typeof proximainicial==undefined){
					var numinicialrequisicao = primeirainicial;
					var numfinalrequisicao = primeirafinal;
	              		} else {
					var numinicialrequisicao = proximainicial;
					var numfinalrequisicao = proximafinal;
				}

				$(#Requisicao_num_requisicao_inicial_medico).val(numinicialrequisicao);
				$(#Requisicao_num_requisicao_final_medico).val(numfinalrequisicao);
				$(#Requisicao_id_num_sequencial).val(seriesdisponiveis);
	           
	          	});     			
		}'
	),
));

0

#5 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 09 October 2012 - 09:38 AM

View PostLothor, on 08 October 2012 - 02:08 PM, said:

samjf, tenta jogar o código do success dentro de uma função.

Assim:

echo CHtml::button('Buscar', array(
	'ajax' => array(
		'type' => 'POST',
		'url' => CController::createUrl('Requisicao/buscaultimo'),
		'update' => '#param_id',
		'success' => 'function() { // Apenas coloquei seu código dentro desta função.
			$(#yt0).click(function(){
				var primeirainicial = 0+$(#primeira_requisicao_inicial).val();
				var primeirafinal =   0+$(#primeira_requisicao_final).val();
				var proximainicial =  0+$(#Requisicao_proxima_requisicao_inicial).val();
				var proximafinal =    0+$(#Requisicao_proxima_requisicao_final).val();
				var seriesdisponiveis = $(#series_disponiveis).val();
				var quantidadefolhas =  $(#Requisicao_qtde_folhas_requisicao).val();
				var quantidadedisponivel =  $(#quantidadedisponivel).val();

				if(typeof proximainicial==undefined  || typeof proximainicial==undefined){
					var numinicialrequisicao = primeirainicial;
					var numfinalrequisicao = primeirafinal;
	              		} else {
					var numinicialrequisicao = proximainicial;
					var numfinalrequisicao = proximafinal;
				}

				$(#Requisicao_num_requisicao_inicial_medico).val(numinicialrequisicao);
				$(#Requisicao_num_requisicao_final_medico).val(numfinalrequisicao);
				$(#Requisicao_id_num_sequencial).val(seriesdisponiveis);
	           
	          	});     			
		}'
	),
));


Não funcionou cara, como faço para debugar o javascript no Yii?
Pode ter algum erro de sintaxe.
Valeu mesmo!
0

#6 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 791
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 09 October 2012 - 01:41 PM

samjf,

Usa o firebug, e vai usando alert() no javascript para ver se esta a retornando os dados correto!
Newerton Vargas de Araújo
0

#7 User is offline   Lothor 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 147
  • Joined: 05-August 11
  • Location:Brazil

Posted 11 October 2012 - 09:17 AM

Isso, usa alert() ou console.log(), particularmente gosto mais de usar o console.log(), mas fica a seu critério.

Mas voltando... Seu problema deve ser o seguinte:

// O código está assim:
$(#Requisicao_num_requisicao_inicial_medico).val(numinicialrequisicao);

// Quando deveria estar assim:
$("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);

// Isso em diversos lugares...

0

#8 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 24 October 2012 - 01:27 PM

View PostLothor, on 11 October 2012 - 09:17 AM, said:

Isso, usa alert() ou console.log(), particularmente gosto mais de usar o console.log(), mas fica a seu critério.

Mas voltando... Seu problema deve ser o seguinte:

// O código está assim:
$(#Requisicao_num_requisicao_inicial_medico).val(numinicialrequisicao);

// Quando deveria estar assim:
$("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);

// Isso em diversos lugares...



Lothor, obrigado pela dica!

Desculpe a demora para o retorno, tive alguns imprevistos más estou de volta.

Bom, coloquei as aspas, porém só funciona na forma de botões separados:

  echo CHtml::button('Buscar', array(
                              'ajax' => array(
                                  'type' => 'POST',
                                  'url' => CController::createUrl('Requisicao/buscaultimo'),
                                  'update' => '#param_id',

                                  
                                  
                              )
                          ));
                    
                      echo CHtml::button('Exibir Faixa', array(
                              'ajax' => array(
                                  'type' => 'POST',
                                  'success' => 'function(data) {
                      var primeirainicial = 0+$("#primeira_requisicao_inicial").val();
                      var primeirafinal =   0+$("#primeira_requisicao_final").val();
                      var proximainicial =  0+$("#Requisicao_proxima_requisicao_inicial").val();
                      var proximafinal =    0+$("#Requisicao_proxima_requisicao_final").val();
                      var seriesdisponiveis = $("#series_disponiveis").val();
                      var quantidadefolhas =  $("#Requisicao_qtde_folhas_requisicao").val();
                      var quantidadedisponivel =  $("#quantidadedisponivel").val();
                      var quantidadedisponivel2= series_disponiveis.options[series_disponiveis.selectedIndex].text;
                      var quebra=quantidadedisponivel2.split("|");
                     
                      if(parseInt(quantidadefolhas)>parseInt(quebra[2])+1){
                        alert("Quantidade de folhas requisitada"+quantidadefolhas+" deve ser menor ou igual a quantidade disponível"+quebra[2]);
                      }    
                     
                     if(isNaN(primeirainicial) &&  isNaN(primeirafinal)){
                        
                        var numinicialrequisicao = proximainicial;
                        var numfinalrequisicao = proximafinal;
                      
                      }else{
                       
                         var numinicialrequisicao = primeirainicial;
                         var numfinalrequisicao = primeirafinal;

                      }
        
                      $("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);
                      $("#Requisicao_num_requisicao_final_medico").val(numfinalrequisicao);
                      $("#Requisicao_id_num_sequencial").val(seriesdisponiveis);                                      

   
  }'
                            
                              )
                          ));


Se colocar tudo em um botão só não funciona (aparece Nan nos campos texto). Dessa forma:
echo CHtml::button('Exibir Faixa', array(
                              'ajax' => array(
                                  'type' => 'POST',
                                  'url' => CController::createUrl('Requisicao/buscaultimo'),
                                  'update' => '#param_id',
                                  'success' => 'function(data) {
                      var primeirainicial = 0+$("#primeira_requisicao_inicial").val();
                      var primeirafinal =   0+$("#primeira_requisicao_final").val();
                      var proximainicial =  0+$("#Requisicao_proxima_requisicao_inicial").val();
                      var proximafinal =    0+$("#Requisicao_proxima_requisicao_final").val();
                      var seriesdisponiveis = $("#series_disponiveis").val();
                      var quantidadefolhas =  $("#Requisicao_qtde_folhas_requisicao").val();
                      var quantidadedisponivel =  $("#quantidadedisponivel").val();
                      var quantidadedisponivel2= series_disponiveis.options[series_disponiveis.selectedIndex].text;
                      var quebra=quantidadedisponivel2.split("|");
                     
                      if(parseInt(quantidadefolhas)>parseInt(quebra[2])+1){
                        alert("Quantidade de folhas requisitada"+quantidadefolhas+" deve ser menor ou igual a quantidade disponível"+quebra[2]);
                      }    
                     
                     if(isNaN(primeirainicial) &&  isNaN(primeirafinal)){
                        
                        var numinicialrequisicao = proximainicial;
                        var numfinalrequisicao = proximafinal;
                      
                      }else{
                       
                         var numinicialrequisicao = primeirainicial;
                         var numfinalrequisicao = primeirafinal;

                      }
        
                      $("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);
                      $("#Requisicao_num_requisicao_final_medico").val(numfinalrequisicao);
                      $("#Requisicao_id_num_sequencial").val(seriesdisponiveis);                                      

   
  }'
                            
                              )
                          ));


Alguém sabe o que poderia gerar esse 'conflito'?
Obrigado mais uma vez!
0

#9 User is offline   Lothor 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 147
  • Joined: 05-August 11
  • Location:Brazil

Posted 24 October 2012 - 02:42 PM

Precisamos saber o que está sendo retornado samjf, antes do código abaixo:

$("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);
$("#Requisicao_num_requisicao_final_medico").val(numfinalrequisicao);
$("#Requisicao_id_num_sequencial").val(seriesdisponiveis);


Coloca essa linha e informa pra gente a saída dela:

alert(numinicialrequisicao + " " + numfinalrequisicao + " " + seriesdisponiveis);

0

#10 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 25 October 2012 - 11:36 AM

View PostLothor, on 24 October 2012 - 02:42 PM, said:

Precisamos saber o que está sendo retornado samjf, antes do código abaixo:

$("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);
$("#Requisicao_num_requisicao_final_medico").val(numfinalrequisicao);
$("#Requisicao_id_num_sequencial").val(seriesdisponiveis);


Coloca essa linha e informa pra gente a saída dela:

alert(numinicialrequisicao + " " + numfinalrequisicao + " " + seriesdisponiveis);



Está retornando :
NaN NaN 164

Ou seja, ele não está trazendo os campos dinâmicos do meu método no controller. O engraçado é que em botões separados ele traz, será que o botão não aceita essa estrutura com duas ações?


  'url' => CController::createUrl('Requisicao/buscaultimo'),
                                  'update' => '#param_id',
                                  'success' => 'function(data) {


Segue o método do Controller que traz os dados.

 public function actionbuscaultimo()
       {
   
       
             $parametro = ((int) $_POST['Requisicao']['qtde_folhas_requisicao']);
     
             $parametro2 = (int)$_POST['series_disponiveis'];
                
             $posts = Requisicao::model()->findBySql("SELECT (MAX(req.num_requisicao_final_medico)+1) as proxima_requisicao_inicial, (MAX(req.num_requisicao_final_medico)+:keyword) as proxima_requisicao_final,
ns.num_sequencial_inicial as primeira_requisicao_inicial, ns.num_sequencial_inicial+:keyword-1 as primeira_requisicao_final,
        MAX(ns.num_sequencial_final) - MAX(req.num_requisicao_final_medico) as quantidade_disponivel,
        ns.num_sequencial_final - ns.num_sequencial_inicial as quantidade_disponivel_sem_requisicao
                                                FROM 
                                                sch_scspm.tb_num_sequencial ns
                                                LEFT JOIN sch_scspm.tb_requisicao req
                                                                ON 
                                                                (ns.id_num_sequencial = req.id_num_sequencial)

                                                                 WHERE
                                                                        ns.id_num_sequencial = :keyword2
							GROUP BY ns.num_sequencial_inicial, ns.num_sequencial_final", array(':keyword' => $parametro, ':keyword2' => $parametro2));
        
                // var_dump($posts);

              $posts->primeira_requisicao_inicial = (int) $posts->primeira_requisicao_inicial;

              $posts->primeira_requisicao_final =  (int) $posts->primeira_requisicao_final;

              $posts->proxima_requisicao_inicial = (int) $posts->proxima_requisicao_inicial;

              $posts->proxima_requisicao_final = (int) $posts->proxima_requisicao_final;

              $posts->quantidade_disponivel = (int) $posts->quantidade_disponivel;

              $posts->quantidade_disponivel_sem_requisicao = (int) $posts->quantidade_disponivel_sem_requisicao;

      
              if ($posts->proxima_requisicao_inicial ==  NULL || $posts->proxima_requisicao_final ==  NULL) {
                   //echo 'nenhuma requisição';
                   //não existe nenhuma requisição
                   //echo CHtml::label('Faixa Liberada para o Médico', 'primeira_requisicao_inicial');
                   echo CHtml::HiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8), array('id' => 'primeira_requisicao_inicial') );
                   echo CHtml::HiddenField('primeira_requisicao_final', $posts->primeira_requisicao_final,  array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8), array('id' => 'primeira_requisicao_final') );
                   echo CHtml::HiddenField('quantidade_disponivel_sem_requisicao', $posts->quantidade_disponivel_sem_requisicao,  array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8), array('id' => 'quantidade_disponivel_sem_requisicao') );
                   echo 'Faixa Calculada!';

               } else {
                 // echo 'próxima requisição';
                  //existe requisicao
                  //echo CHtml::label('Faixa Liberada para o Médico', 'proxima_requisicao_inicial');
                  echo CHtml::HiddenField('Requisicao[proxima_requisicao_inicial]', $posts->proxima_requisicao_inicial, array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('id' => 'proxima_requisicao_inicial')) ;
                  echo CHtml::HiddenField('Requisicao[proxima_requisicao_final]', $posts->proxima_requisicao_final, array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('id' => 'proxima_requisicao_final'));
                  echo CHtml::HiddenField('quantidade_disponivel', $posts->quantidade_disponivel,  array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8), array('id' => 'quantidade_disponivel') ); 
                  echo 'Faixa Calculada!';
               }
    
               
               
    }


Me desculpe as dúvidas, estou iniciando. Obrigado pela ajuda desde então.
0

#11 User is offline   Lothor 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 147
  • Joined: 05-August 11
  • Location:Brazil

Posted 25 October 2012 - 12:13 PM

samjf, não consegui encontrar o erro assim no olho.

Como você está convertendo os valores para int não faz sentido eles estarem retornando NaN, em casa vou olhar com mais calma caso não encontres a solução até lá.
0

#12 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 791
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 25 October 2012 - 02:02 PM

samjf,

Olhei com calma o código aqui, você esta retornando hiddenField() para depois com jquery buscar esses valores nos inputs?

Você vai precisar desses hiddenField() na sumissão do formulário?
Por que há solução de reduzir esse código pela metade sem usar esse hiddenField().

Faz os calculos todos no actionBuscaultimo() e retorna somente os dados que você precisa.
Newerton Vargas de Araújo
0

#13 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 25 October 2012 - 02:26 PM

View PostNewerton, on 25 October 2012 - 02:02 PM, said:

samjf,

Olhei com calma o código aqui, você esta retornando hiddenField() para depois com jquery buscar esses valores nos inputs?

Você vai precisar desses hiddenField() na sumissão do formulário?
Por que há solução de reduzir esse código pela metade sem usar esse hiddenField().

Faz os calculos todos no actionBuscaultimo() e retorna somente os dados que você precisa.

Estou retornando exatamente isso.

O sistema funciona da seguinte forma: O usuário digita a quantidade de receita que ele quer, dai escolhe o tipo de receita ai carrega todas as faixas numéricas daquele tipo com suas respectivas quantidades disponíveis.

ai quando ele seleciona uma faixa numerica busco pelo id e faço o calculo baseado na quantidade requerida e na faixa selecionada
esses valores tenho que jogar em campos do formulario para gravar na tabela numero_inicial, numero_final. Gravo também o id em um hidden, mas acho que não vai precisar de ter esse hidden do id pois ele já existe ateriormente só tira-lo como obrigatório dai no actioncreate pego ele do campo anterior.

Talvez tentando dessa forma nós conseguimos né?
Como faria sem o hidden?

Valeu.
0

#14 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 791
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 25 October 2012 - 10:26 PM

samjf,

Refiz algumas coisas, e achei alguns erros que poderia solucionar o problema, mais vou postar uma solução que pode ajudar também.

Eu adicionei os hiddenField() direto no HTML.
<div id="param_id" class="row">
<?php
echo CHtml::hiddenField('primeira_requisicao_inicial', '',  array('id' => 'primeira_requisicao_inicial') );
echo CHtml::hiddenField('primeira_requisicao_final', '',  array('id' => 'primeira_requisicao_final') );
echo CHtml::hiddenField('quantidade_disponivel_sem_requisicao', '', array('id' => 'quantidade_disponivel_sem_requisicao') );

echo CHtml::hiddenField('Requisicao[proxima_requisicao_inicial]', '', array('id' => 'proxima_requisicao_inicial')) ;
echo CHtml::hiddenField('Requisicao[proxima_requisicao_final]', '', array('id' => 'proxima_requisicao_final'));
echo CHtml::hiddenField('quantidade_disponivel', '', array('id' => 'quantidade_disponivel') ); 
?>
</div>


Existem 2 parametros no seu actionBuscaultimo() que não recebia valor nenhum, por que não foi adicionado valores de envio na requisição ajax, as duas váriaveis são ($parametro e $parametro2).
<?php
public function actionbuscaultimo() {
 
	$parametro = (int) $_POST['qtde_folhas_requisicao'];

	$parametro2 = (int) $_POST['series_disponiveis'];

	$sql = "SELECT 
		(MAX(req.num_requisicao_final_medico)+1) as proxima_requisicao_inicial
		,(MAX(req.num_requisicao_final_medico)+:keyword) as proxima_requisicao_final
		,ns.num_sequencial_inicial as primeira_requisicao_inicial
		,ns.num_sequencial_inicial+:keyword-1 as primeira_requisicao_final
		,MAX(ns.num_sequencial_final) - MAX(req.num_requisicao_final_medico) as quantidade_disponivel
		,ns.num_sequencial_final - ns.num_sequencial_inicial as quantidade_disponivel_sem_requisicao
	FROM 
		sch_scspm.tb_num_sequencial ns LEFT JOIN sch_scspm.tb_requisicao req ON (ns.id_num_sequencial = req.id_num_sequencial)
	WHERE
		ns.id_num_sequencial = :keyword2
	GROUP BY ns.num_sequencial_inicial, ns.num_sequencial_final";
	
	$posts = Requisicao::model()->findBySql($sql, array(':keyword' => $parametro, ':keyword2' => $parametro2));

	if (is_null($posts->proxima_requisicao_inicial) || is_null($posts->proxima_requisicao_final)) {
		echo CJSON::encode(array(
			'primeira_requisicao_inicial' => (int) $posts->primeira_requisicao_inicial,
			'primeira_requisicao_final' => (int) $posts->primeira_requisicao_final,
			'quantidade_disponivel_sem_requisicao' => (int) $posts->quantidade_disponivel_sem_requisicao
		));

	} else {
		echo CJSON::encode(array(
			'proxima_requisicao_inicial' => (int) $posts->proxima_requisicao_inicial,
			'proxima_requisicao_final' => (int) $posts->proxima_requisicao_final,
			'quantidade_disponivel' => (int) $posts->quantidade_disponivel
		));
	}               
}


No botão de Exibir Faixa adicionei alguns parametros, com calma avalia o que fiz.
<?php
echo CHtml::button('Exibir Faixa', 
	array(
		'ajax' => array(
			'type' => 'POST',
			'dataType' => 'json',
			'url' => CController::createUrl('Requisicao/buscaultimo'),
			'data' => array(
				'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
				'series_disponiveis' => 'js:$("select#series_disponiveis option:selected").val()',
				),
			'success' => 'function(data) {

				var seriesdisponiveis = $("#series_disponiveis option:selected");
				var quantidadefolhas =  $("#Requisicao_qtde_folhas_requisicao").val();
				var quantidadedisponivel =  $("#quantidadedisponivel").val();
				var quantidadedisponivel2 = seriesdisponiveis.text();
				var quebra=quantidadedisponivel2.split("|");

				if(parseInt(quantidadefolhas)>parseInt(quebra[2])+1){
					alert("Quantidade de folhas requisitada"+quantidadefolhas+" deve ser menor ou igual a quantidade disponível"+quebra[2]);
					return false;
				}    

				/* Verifica o retorno desse condição em JSON usando console.log() ou alert()*/
				//DEBUG:
				//console.log(typeof data.primeira_requisicao_inicial);
				//console.log(typeof data.primeira_requisicao_final);
				// Veja qual o tipo de retorno esta vindo dessas váriavels, se será undefined, null, vazio, e só descomentar as duas linhas acimas
				
				if(isNaN(data.primeira_requisicao_inicial) &&  isNaN(data.primeira_requisicao_final)) {

					var numinicialrequisicao = data.proxima_requisicao_inicial;
					var numfinalrequisicao = data.proxima_requisicao_final;

				} else {

					var numinicialrequisicao = data.primeira_requisicao_inicial;
					var numfinalrequisicao = data.primeira_requisicao_final;

				}

				$("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);
				$("#Requisicao_num_requisicao_final_medico").val(numfinalrequisicao);
				$("#Requisicao_id_num_sequencial").val(seriesdisponiveis.val());
				
				/*
				Esses eram os campos que retornava com valores do seu actionBuscaultimo(), 
				não sei se ira usar na submissão do formulário, por isso acrestentei no HTML
				*/
				$("#primeira_requisicao_inicial").val(seriesdisponiveis.val());
				$("#primeira_requisicao_final").val(seriesdisponiveis.val());
				$("#proxima_requisicao_inicial").val(seriesdisponiveis.val());
				$("#proxima_requisicao_final").val(seriesdisponiveis.val());

			}'

		)
	)
);


Obs.: Os 4 hiddenField() que tinha no seu actionBuscaultimo eu não sabia para qual finalidade ia usar, por isso adicionei os 4 campos direto no HTML, assim depois da requisição ajax, eu populei ele com os valores da consulta.

This post has been edited by Newerton: 25 October 2012 - 10:36 PM

Newerton Vargas de Araújo
0

#15 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 791
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 25 October 2012 - 10:36 PM

samjf,

Agora nesse post segue algumas linhas que identifiquei alguns erros, caso queira só corrigir seu código.

actionBuscaultimo():

$parametro = ((int) $_POST['Requisicao']['qtde_folhas_requisicao']);
$parametro2 = (int)$_POST['series_disponiveis'];

No botão 'Exibir Faixa', não está enviando nenhum das duas váriaveis, assim pode retornar erro na sua consulta.

Solução
Adiciona:
			'data' => array(
				'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
				'series_disponiveis' => 'js:$("select#series_disponiveis option:selected").val()',
				),


Debaixo do:
'url' => CController::createUrl('Requisicao/buscaultimo'),


Assim você vai está enviando as duas váriaveis.

Os hiddenField:
echo CHtml::HiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('readonly' => true, 'size' => 8, 'maxlength' => 8 ), array('size' => 8, 'maxlength' => 8 ), array('id' => 'primeira_requisicao_inicial') );


TODOS eles estão renderizando na sua div id="param_id" class="row"> errado.

O hiddenField() e composto por 3 váriaveis na sua função.
public static string hiddenField(string $name, string $value='', array $htmlOptions=array ( ))

Então seu hiddenField() não estava com a ID correta, com a qual você estipulou ser.

Solução
Remove todos:
array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8)

Deixando assim:
echo CHtml::hiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('id' => 'primeira_requisicao_inicial') );
echo CHtml::hiddenField('primeira_requisicao_final', $posts->primeira_requisicao_final,  array('id' => 'primeira_requisicao_final') );
echo CHtml::hiddenField('quantidade_disponivel_sem_requisicao', $posts->quantidade_disponivel_sem_requisicao, array('id' => 'quantidade_disponivel_sem_requisicao') );

echo CHtml::hiddenField('Requisicao[proxima_requisicao_inicial]', $posts->proxima_requisicao_inicial, array('id' => 'proxima_requisicao_inicial')) ;
echo CHtml::hiddenField('Requisicao[proxima_requisicao_final]', $posts->proxima_requisicao_final, array('id' => 'proxima_requisicao_final'));
echo CHtml::hiddenField('quantidade_disponivel', $posts->quantidade_disponivel, array('id' => 'quantidade_disponivel') ); 


Acho que com essas correções o código atual já deve funcionar.
Newerton Vargas de Araújo
0

#16 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 26 October 2012 - 05:51 AM

View PostNewerton, on 25 October 2012 - 10:36 PM, said:

samjf,

Agora nesse post segue algumas linhas que identifiquei alguns erros, caso queira só corrigir seu código.

actionBuscaultimo():

$parametro = ((int) $_POST['Requisicao']['qtde_folhas_requisicao']);
$parametro2 = (int)$_POST['series_disponiveis'];

No botão 'Exibir Faixa', não está enviando nenhum das duas váriaveis, assim pode retornar erro na sua consulta.

Solução
Adiciona:
			'data' => array(
				'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
				'series_disponiveis' => 'js:$("select#series_disponiveis option:selected").val()',
				),


Debaixo do:
'url' => CController::createUrl('Requisicao/buscaultimo'),


Assim você vai está enviando as duas váriaveis.

Os hiddenField:
echo CHtml::HiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('readonly' => true, 'size' => 8, 'maxlength' => 8 ), array('size' => 8, 'maxlength' => 8 ), array('id' => 'primeira_requisicao_inicial') );


TODOS eles estão renderizando na sua div id="param_id" class="row"> errado.

O hiddenField() e composto por 3 váriaveis na sua função.
public static string hiddenField(string $name, string $value='', array $htmlOptions=array ( ))

Então seu hiddenField() não estava com a ID correta, com a qual você estipulou ser.

Solução
Remove todos:
array('readonly' => true, 'size' => 8, 'maxlength'=>8), array('size' => 8, 'maxlength'=>8)

Deixando assim:
echo CHtml::hiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('id' => 'primeira_requisicao_inicial') );
echo CHtml::hiddenField('primeira_requisicao_final', $posts->primeira_requisicao_final,  array('id' => 'primeira_requisicao_final') );
echo CHtml::hiddenField('quantidade_disponivel_sem_requisicao', $posts->quantidade_disponivel_sem_requisicao, array('id' => 'quantidade_disponivel_sem_requisicao') );

echo CHtml::hiddenField('Requisicao[proxima_requisicao_inicial]', $posts->proxima_requisicao_inicial, array('id' => 'proxima_requisicao_inicial')) ;
echo CHtml::hiddenField('Requisicao[proxima_requisicao_final]', $posts->proxima_requisicao_final, array('id' => 'proxima_requisicao_final'));
echo CHtml::hiddenField('quantidade_disponivel', $posts->quantidade_disponivel, array('id' => 'quantidade_disponivel') ); 


Acho que com essas correções o código atual já deve funcionar.


Certo, adicionei as correções mencionadas.
Acontece que quando coloco:
  'data' => array(
                                                    'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
                                                    'series_disponiveis' => 'js:$("select#series_disponiveis option:selected").val()',
                                                    ),


parece que mesmo assim ele não envia os dados para o controller ou da algum erro ( tentei dar um var_dump la dentro e nada). Além disso ele não da o alert que colocamos dentro do parametro 'success'

mudei o campo 'series_disponiveis para pegar o valor(id) para ser usado na busca (como era anteriormente) e não a opção e também não funcionou:
Segue o código:

_form.php
echo CHtml::button('Exibir Faixa', array(
                              'ajax' => array(
                                  'type' => 'POST',
                                   'url' => CController::createUrl('Requisicao/buscaultimo'),
                                   'data' => array(
                                                    'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
                                                    'series_disponiveis' => 'js:$("#series_disponiveis").val()',
                                                    ),
                                  'update' => '#param_id',
                                  'success' => 'function(data) {
                                   
                      var primeirainicial = 0+$("#primeira_requisicao_inicial").val();
                      var primeirafinal =   0+$("#primeira_requisicao_final").val();
                      var proximainicial =  0+$("#Requisicao_proxima_requisicao_inicial").val();
                      var proximafinal =    0+$("#Requisicao_proxima_requisicao_final").val();
                      var seriesdisponiveis = $("#series_disponiveis").val();
                      var quantidadefolhas =  $("#Requisicao_qtde_folhas_requisicao").val();
                      var quantidadedisponivel =  $("#quantidadedisponivel").val();
                      var quantidadedisponivel2= series_disponiveis.options[series_disponiveis.selectedIndex].text;
                      var quebra=quantidadedisponivel2.split("|");
                    
                      if(parseInt(quantidadefolhas)>parseInt(quebra[2])+1){
                        alert("Quantidade de folhas requisitada"+quantidadefolhas+" deve ser menor ou igual a quantidade disponível"+quebra[2]);
                      }    
                     
                     if(isNaN(primeirainicial) &&  isNaN(primeirafinal)){
                        alert("primeira requisicao");
                        var numinicialrequisicao = proximainicial;
                        var numfinalrequisicao = proximafinal;
                      
                      }else{
                        
                         var numinicialrequisicao = primeirainicial;
                         var numfinalrequisicao = primeirafinal;

                      }
                      alert(numinicialrequisicao + " " + numfinalrequisicao + " " + seriesdisponiveis);
                      $("#Requisicao_num_requisicao_inicial_medico").val(numinicialrequisicao);
                      $("#Requisicao_num_requisicao_final_medico").val(numfinalrequisicao);
                      $("#Requisicao_id_num_sequencial").val(seriesdisponiveis);                                      

   
  }'
                            
                            )
                        )
                          );



Controller:

 public function actionbuscaultimo()
 {
             $parametro = ((int) $_POST['Requisicao']['qtde_folhas_requisicao']);
            
             $parametro2 = (int)$_POST['series_disponiveis'];
               
             $posts = Requisicao::model()->findBySql("SELECT (MAX(req.num_requisicao_final_medico)+1) as proxima_requisicao_inicial, (MAX(req.num_requisicao_final_medico)+:keyword) as proxima_requisicao_final,
ns.num_sequencial_inicial as primeira_requisicao_inicial, ns.num_sequencial_inicial+:keyword-1 as primeira_requisicao_final,
        MAX(ns.num_sequencial_final) - MAX(req.num_requisicao_final_medico) as quantidade_disponivel,
        ns.num_sequencial_final - ns.num_sequencial_inicial as quantidade_disponivel_sem_requisicao
                                                FROM 
                                                sch_scspm.tb_num_sequencial ns
                                                LEFT JOIN sch_scspm.tb_requisicao req
                                                                ON 
                                                                (ns.id_num_sequencial = req.id_num_sequencial)

                                                                 WHERE
                                                                        ns.id_num_sequencial = :keyword2
							GROUP BY ns.num_sequencial_inicial, ns.num_sequencial_final", array(':keyword' => $parametro, ':keyword2' => $parametro2));
        
                // var_dump($posts);

              $posts->primeira_requisicao_inicial = (int) $posts->primeira_requisicao_inicial;

              $posts->primeira_requisicao_final =  (int) $posts->primeira_requisicao_final;

              $posts->proxima_requisicao_inicial = (int) $posts->proxima_requisicao_inicial;

              $posts->proxima_requisicao_final = (int) $posts->proxima_requisicao_final;

              $posts->quantidade_disponivel = (int) $posts->quantidade_disponivel;

              $posts->quantidade_disponivel_sem_requisicao = (int) $posts->quantidade_disponivel_sem_requisicao;

      
              if ($posts->proxima_requisicao_inicial ==  NULL || $posts->proxima_requisicao_final ==  NULL) {
                   //echo 'nenhuma requisição';
                   //não existe nenhuma requisição
                   //echo CHtml::label('Faixa Liberada para o Médico', 'primeira_requisicao_inicial');
                   echo CHtml::hiddenField('primeira_requisicao_inicial', $posts->primeira_requisicao_inicial,  array('id' => 'primeira_requisicao_inicial') );
                   echo CHtml::hiddenField('primeira_requisicao_final', $posts->primeira_requisicao_final,  array('id' => 'primeira_requisicao_final') );
                   echo CHtml::hiddenField('quantidade_disponivel_sem_requisicao', $posts->quantidade_disponivel_sem_requisicao, array('id' => 'quantidade_disponivel_sem_requisicao') );
                   echo 'Faixa Calculada!';

               } else {
                 // echo 'próxima requisição';
                  //existe requisicao
                  //echo CHtml::label('Faixa Liberada para o Médico', 'proxima_requisicao_inicial');
                 echo CHtml::hiddenField('Requisicao[proxima_requisicao_inicial]', $posts->proxima_requisicao_inicial, array('id' => 'proxima_requisicao_inicial')) ;
                 echo CHtml::hiddenField('Requisicao[proxima_requisicao_final]', $posts->proxima_requisicao_final, array('id' => 'proxima_requisicao_final'));
                 echo CHtml::hiddenField('quantidade_disponivel', $posts->quantidade_disponivel, array('id' => 'quantidade_disponivel') ); 
                 echo 'Faixa Calculada!';
               }
    
        
               
    }


Me parece que ele nen está indo no controller, será que o parametro 'data' funciona com 'success'?
0

#17 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 791
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 26 October 2012 - 12:03 PM

samjf,

Os que é enviado pelo 'data' não é retornado pelo function(data), o que pode está dando errado é o ID dos campos que estã enviando.

Se estiver usando o Firefox, usa sempre o Firebug para debugar, e mais fácil de manipular e te mostra o que deve mostrar.

Essa linha aqui:
'data' => array(
	'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
	'series_disponiveis' => 'js:$("select#series_disponiveis option:selected").val()',
),


Você precisa pegar os ID (#) correto dos <input>, ele só envia esses dados se esses <input> já tiver no HTML. Se ele não existir o botão não vai enviar dado nenhum mesmo.

O retorno dos dados do actionBuscaultimo() está retornando em HTML, então o retorno deve funcionar normal, por que ele retorna os hiddenField() e adiciona na <div id="param_id">

Eu não sei se o 'update' e 'complete' funciona de forma sincronizada.

Faz assim, remove o 'update', e depois coloca um alert(data) debaixo do function(data) {
Newerton Vargas de Araújo
0

#18 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 29 October 2012 - 06:35 AM

View PostNewerton, on 26 October 2012 - 12:03 PM, said:

samjf,

Os que é enviado pelo 'data' não é retornado pelo function(data), o que pode está dando errado é o ID dos campos que estã enviando.

Se estiver usando o Firefox, usa sempre o Firebug para debugar, e mais fácil de manipular e te mostra o que deve mostrar.

Essa linha aqui:
'data' => array(
	'qtde_folhas_requisicao' => 'js:$("#Requisicao_qtde_folhas_requisicao").val()',
	'series_disponiveis' => 'js:$("select#series_disponiveis option:selected").val()',
),


Você precisa pegar os ID (#) correto dos <input>, ele só envia esses dados se esses <input> já tiver no HTML. Se ele não existir o botão não vai enviar dado nenhum mesmo.

O retorno dos dados do actionBuscaultimo() está retornando em HTML, então o retorno deve funcionar normal, por que ele retorna os hiddenField() e adiciona na <div id="param_id">

Eu não sei se o 'update' e 'complete' funciona de forma sincronizada.

Faz assim, remove o 'update', e depois coloca um alert(data) debaixo do function(data) {


Bom dia!
Então cara, parece mesmo que nen o parametro 'data', nen o 'update' funciona com o 'success'.
Quando retiro-os consigo manipular os dados do botão com o alert(), pois ainda não estou conseguindo trabalhar com o Firebug. Por mais simples que ele seja.

Más sobre o código coloquei o alert(data), depois da função e ele retornou todos os campos com os dados corretamente:
Se for a próxima requisição:

<input id="proxima_requisicao_inicial" type="hidden" value="5431881" name="Requisicao[proxima_requisicao_inicial]" />
<input id="proxima_requisicao_final" type="hidden" value="5431890" name="Requisicao[proxima_requisicao_final]"/><input id="quantidade_disponivel" type="hidden" value="20" name="quantidade_disponivel" />


Se for a primeira:

<input id="primeira_requisicao_inicial" type="hidden" value="80000001" name="primeira_requisicao_inicial"/><input id="primeira_requisicao_final" type="hidden" value="80000010" name="primeira_requisicao_final" />
<input id="quantidade_disponivel_sem_requisicao" type="hidden" value="9999999" name="quantidade_disponivel_sem_requisicao" />



Aí depois os valores vem como Nan no Javascript e não são calculados.
 alert(numinicialrequisicao + " " + numfinalrequisicao + " " + seriesdisponiveis);



Resultado:
Nan, Nan, 164

Ele não pega os valores dos campos hidden, então não faz o cálculo.
Como o data é um valor só uma String, seria o caso de quebra-la ao invés de pegar através do comando.val?
Só que como faria isso a estrutura é um pouco complexa dessa string.


Valeu.
0

#19 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 791
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

Posted 29 October 2012 - 07:39 AM

Esses campos hiddenField() você vai só usa ele para pegar os valores? Ou vai usar para salvar no banco de dados?

Foi o que falei anteriormente, se você não for usar os hiddenField() não precisa enviar eles em HTML, ja pode ser enviado somente os valores em JSON.

Sobre o paramêtro 'data' você precisa enviar os valores do <input> verifica o ID dos 2 <inputs>, isso se eles existirem em HTML.
Newerton Vargas de Araújo
0

#20 User is offline   samjf 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 26-June 12

Posted 30 October 2012 - 02:36 PM

View PostNewerton, on 29 October 2012 - 07:39 AM, said:

Esses campos hiddenField() você vai só usa ele para pegar os valores? Ou vai usar para salvar no banco de dados?

Foi o que falei anteriormente, se você não for usar os hiddenField() não precisa enviar eles em HTML, ja pode ser enviado somente os valores em JSON.

Sobre o paramêtro 'data' você precisa enviar os valores do <input> verifica o ID dos 2 <inputs>, isso se eles existirem em HTML.


Acredito que não precise dos valores em html, pois depois que busco o próprio Jquery que irá adicionar nos demais campos.
Então talvez o JSON, resolveria mesmo. Poderia me exemplificar o que eu teria que mudar, se possível?
Valeu!
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users