php - remove - Desconectar alertas al hacer clic en el botón
strip_tags() (9)
Cuando hago clic en el botón, las alertas no se realizan. ¿Qué estoy haciendo mal? Tal vez necesito incluir algunos archivos js en mi sección de encabezado?
Aquí está mi vista de formulario de inicio de sesión:
<?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>
Aquí está mi código en el controlador:
public function actionLogin()
{
$this->renderPartial(''//blocks/user_info'');
}
user_info simplemente hace eco de some text
¿Funciona antes de enviar? ¿Qué pasa si prueba el "éxito" en lugar de "completar"?
No estoy seguro de si este es su problema, pero renderPartial () no funciona bien con AJAX. Es un problema conocido de Yii:
http://www.yiiframework.com/forum/index.php/topic/24699-yii-20-ajaxrenderpartial-conflict/ http://www.yiiframework.com/forum/index.php?/topic/10427-ajax -clientscript
Me encontré con el problema cuando intenté cargar un formulario a través de AJAX, luego lo reenví usando CHtml :: ajaxSubmitButton.
Tengo este problema (¿error?) También. Intente cambiar ''beforeSend'' y otras devoluciones de llamada en esta vista:
''beforeSend'':''js:alert("complete");''
sin "function () {}" y con "js".
PD: Lo siento, mi inglés es malo (
prueba esto
this->renderPartial(''//blocks/user_info'','''', false, true);
Este es un simple ejemplo del botón Enviar de Yii Ajax:
<?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);
}
}'',
)
);
?>
Más detalles en http://www.codexamples.com/90/chtml-ajaxsubmitbutton/
Ajax submit button a la 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")
);
En la acción del controlador:
$return = array();
$return[''status''] = ''1'';
$return[''msg''] = ''Record Updated Successfully'';
echo CJSON::encode($return);
Yii::app()->end();
Cambiar la matriz de devolución según el requisito.
Debe establecer el cuarto parámetro de la función renderPartial en verdadero, de modo que Yii incluya los archivos JS necesarios para el correcto funcionamiento de la vista.
$this->renderPartial(''_form'',array(''model''=>$model), false, true);
en mi código funciona, prueba esto
<?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);
}
}'',
));
?>
En la función del controlador necesita enviar 3 parámetros más (4 parámetros en total)
tu función será así
public function actionLogin()
{
this->renderPartial(''//blocks/user_info'','''',false,true);
}