Hi,
I am trying to use CHtml::ajax() function to send a request from the view to the controller.
The view display 4 input fields which it sends to the controller upon submit.
The controller makes an internal calculation and creates a request id ($reqid) which it send back to the view using render(). This part works as it should.
The view (Diag.php)
<?php
/* @var $this DiagFormController */
/* @var $model DiagForm */
/* @var $form CActiveForm */
?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'diag-form-Diag-form',
'enableAjaxValidation'=>true,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->label($model,'site_id'); ?>
<?php echo $form->textField($model,'site_id') ?>
</div>
<div class="row">
<?php echo $form->label($model,'link_id'); ?>
<?php echo $form->textField($model,'link_id') ?>
</div>
<div class="row">
<?php echo $form->label($model,'device_name'); ?>
<?php echo $form->textField($model,'device_name') ?>
</div>
<div class="row">
<?php echo $form->label($model,'device_level'); ?>
<?php echo $form->textField($model,'device_level') ?>
</div>
<div class="row submit">
<?php echo CHtml::button('Get Diagnostics', array('submit' => array('Diag/getDiagnostics'))); ?>
</div>
<div class="row">
<?php echo $form->label($model,'result:'); ?>
<?php echo $form->textArea($model,'result', array('maxlength' => 300, 'rows' => 10, 'cols' => 80)); ?>
<?php
if ($ajax_flag == 'true')
{
CHtml::ajax(array(
'url'=>yii::app()->createUrl('Diag/CheckStatus'),
'type'=>'POST',
'data'=>array('request'=>$reqid),
'success'=>"function(){
alert('ok');}"
));
}
?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
The view is trying to make ajax call to a different controller action (actionCheckStatus) however the function is never called.
The controller (DiagController.php)
class DiagController extends Controller
{
public function actionIndex()
{
}
public function actionGetDiagnostics()
{
// Internal logic which works fine
}
public function actionCheckStatus()
{
// Function never gets called !!!
}
Notes:
I am using yii 1.1.13.
I am working on a localhost (Apache).
I tried replacing CHTML::ajax() with CHTML::ajaxLink() and it worked…
Again it seems that the ajax call doesn’t reach the controller (debugging verifies this).
What am I doing wrong?
Thanks for your help