2013-03-13 34 views
0

有一个问题,当我尝试调用JSON动作警予我怎么文本框输入电话JSON动作

首先,在警予_form.php这个,我已经得到了包括文本框输入一个名称的形式,看起来象下面这样:

<div class="row"> 
<?php echo $form->labelEx($model,'name'); ?> 
<?php echo $form>textField($model,'name'); ?> 
<?php echo $form->error($model,'name'); ?> 
</div> 

我要的是,当我输入字符“n”,现场工具(电话)行动 我在独立JSON文件定义(如的index.php ?r = user/getuserdata),

read: { 
     url:"index.php?r=user/getuserdata", 
     dataType: "json", 
     type:"post" 
     }, 

UserController.php,有它告诉细节这是什么动作究竟做所谓的 “actionGetUserData()”, 的功能。

public function actionGetUserData(){ 
    $amount = User::model()->findAll("1 = 1 order by id DESC"); //為了排序 
    $count = count($amount); 
    for ($i=0;$i<$count;$i++){ 
     $arr[$i]['id'] = $amount[$i]['id']; 
     $arr[$i]['username'] = $amount[$i]['username']; 
     $arr[$i]['userpwd'] = $amount[$i]['userpwd']; 
     $arr[$i]['usertype'] = $amount[$i]['usertype']; 
     $arr[$i]['modifytime'] = $amount[$i]['modifytime']; 
     $arr[$i]['createtime'] = $amount[$i]['createtime']; 
     $arr[$i]['allowip1'] = $amount[$i]['allowip1']; 
     $arr[$i]['allowip2'] = $amount[$i]['allowip2']; 
     $arr[$i]['allowip3'] = $amount[$i]['allowip3']; 
     $arr[$i]['allowip4'] = $amount[$i]['allowip4']; 
     $arr[$i]['allowip5'] = $amount[$i]['allowip5']; 

     /* $arr[$i][] = $amount[$i]->attributes; */ 
     /* echo "<pre>"; 
     print_r($amount[$i]->attributes); 
     echo "</pre>"; */ 
    } 
    $result = json_encode($arr); 
    echo $result;  
} 

在这种情况下,让我们忽略该函数的准确性(仅举例)。 我想知道,textfield如何调用/触发getuserdata动作index.php?r = user/getuserdata在json文件中。 这意味着如何建立文本字段和json文件操作之间的关系。

请告诉我如何在警予

_form.php这个(文本框)这项工作触发JSON文件(动作)

回答

0

使用JavaScript,你可以实现一个功能,这使得一个Ajax到你基于一定的JavaScript事件控制器actioncall ...

<?php Yii::app->clientScript->registerScript('makeAjaxCall', 
    'function makeAjaxCall(){ 
     $.ajax({ 
      url:"index.php?r=user/getuserdata", 
      dataType: "json", 
      type:"post" 
      /*Any Other Ajax Options here, like the beforeSend, then, done and fail callbacks*/ 
     }) 
    });?> 
<?php echo $form->textField($model,'name',array('onblur'=>'js:makeAjaxCall();')); ?> 

要做到这一点,你可以学习有关jQuery.ajax()功能和jqXHR因此参考您可以构建异步调用以及您的应用程序如何围绕它执行操作。