2012-02-08 20 views
8

Quando faccio clic sul pulsante, gli avvisi non vengono eseguiti. Che cosa sto facendo di sbagliato? Forse ho bisogno di includere alcuni file js nella mia sezione di intestazione?Allarmi antincendio sul pulsante clic

Ecco il mio login vista della forma:

<?php echo CHtml::beginForm(); ?> 

<div class="row"> 
<?php echo CHtml::label('username', 'username'); ?> 
<?php echo CHtml::textField('username'); ?> 
</div> 
<div class="row"> 
<?php echo CHtml::label('password', 'password'); ?> 
<?php echo CHtml::textField('password'); ?> 
</div> 
<?php 
echo CHtml::ajaxButton('sign in', array('site/login'),array(
     'type'=>'POST', 
     'update'=>'#mydiv', 
     'beforeSend' => 'function(){ 
      alert("beforeSend"); 
     }', 
     'complete' => 'function(){ 
      alert("complete"); 
      }', 

)); 
?> 
<?php echo CHtml::endForm(); ?> 
<div id="mydiv" style="color:white;">...</div> 

Ecco il mio codice nel controller:

public function actionLogin() 
{ 
    $this->renderPartial('//blocks/user_info'); 
} 

user_info echi appena some text

+0

il codice funziona bene, voglio dire gli avvisi stanno mostrando , quindi potrebbe esserci qualche altro errore nel file di visualizzazione, è questo l'intero file di visualizzazione? In caso contrario, inserisci l'intero codice del file di visualizzazione di accesso nella tua domanda e questa vista è parzialmente renderizzata o meno? –

risposta

1

fa beforeSend lavoro? Cosa succede se provi "successo" anziché "completo"?

+0

No, non lo è. Ho provato molte cose ma non riesco a farlo funzionare. il modulo è stato inviato e questo è tutto. –

1

Ho anche questo problema (bug?). cambio Da 'beforeSend' e gli altri callback in questa vista:

'beforeSend':'js:alert("complete");' 

senza "function() {}" e con "js".

P.S. Siamo spiacenti, il mio inglese è male (

+0

Dovrebbe essere possibile anche con la funzione, ma penso anche che "js:" è la strada da percorrere. – schmunk

3

provare questo

this->renderPartial('//blocks/user_info','', false, true);

3

nel mio codice funziona provate questo

<?php 
echo CHtml::ajaxSubmitButton('Save','your-url',array(
    'type'=>'POST', 
    'dataType'=>'json', 
    'success'=>'js:function(data){ 
     if(data.result==="success"){ 
      // do something on success, like redirect 
     }else{ 
     $("#some-container").html(data.msg); 
     } 
    }', 
)); 
?> 
+0

Sarebbe meglio se spiegassi anche il codice che pubblichi. –

+0

come passi i dati – shorif2000

1

Questo è semplice esempio di Yii Ajax pulsante Invia:

<?php 
echo CHtml::ajaxSubmitButton(
'Submit', 
'your-url', 
array(
    'type'=>'POST', 
    'dataType'=>'json', 
    'success'=>'js:function(data){ 
     if(data.result==="success"){ 
      // do something on success, like redirect 
     }else{ 
     $("#some-container").html(data.msg); 
     } 
    }', 
) 
); 
?> 

Maggiori dettagli allo http://www.codexamples.com/90/chtml-ajaxsubmitbutton/

0

pulsante Ajax presentare in vista:

echo CHtml::ajaxSubmitButton('Save', array('/controller/action/id/' .  $id), array(
       'type' => 'post', 
       'dataType' => 'json', 
       'update' => '#mydiv', 
       'beforeSend' => 'function(){}', 
       'complete' => 'function(){}', 
       'success' => 'js:function(data){ 
        if(data.status=="1"){ 
         html = "<div class=\"alert in alert-block fade alert-success\"><a class=\"close\" data-dismiss=\"alert\">x</a>"+data.msg+"</div>"; 
         $("#status-msg").html(html); 

         }else{ 
         html = "<div class=\"alert in alert-block fade alert-error\"><a class=\"close\" data-dismiss=\"alert\">x</a>"+data.msg+"</div>"; 
         $("#status-msg").html(html); 
         } 
        }', 
        ), array('class' => "btn btn-primary") 
      ); 

In azione Controller:

 $return = array(); 
     $return['status'] = '1'; 
     $return['msg'] = 'Record Updated Successfully'; 

     echo CJSON::encode($return); 
     Yii::app()->end(); 

Cambio gamma ritorno secondo il requisito.

0

È necessario impostare il quarto parametro della funzione renderPartial su true, in modo che Yii includa i file JS richiesti per il corretto funzionamento della vista.

$this->renderPartial('_form',array('model'=>$model), false, true); 
0

Nella funzione di controllo è necessario inviare altri 3 parametri (totale 4 parametri)

la funzione sarà così

public function actionLogin() 
{ 
    this->renderPartial('//blocks/user_info','',false,true); 
} 
+0

Spero che ti fornisca la soluzione esatta del tuo problema. –

Problemi correlati