当我尝试调用json动作
时出现问题首先,在yii _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如何在json文件中调用/触发getuserdata操作 index.php?r = user / getuserdata 。 这意味着如何构建textfield和json文件操作之间的关系。
请告诉我如何在yii中完成这项工作
_form.php(textfield)触发json文件(动作)
答案 0 :(得分:0)
使用javascript,你可以实现一个函数,根据某个javascript事件为你的控制器动作调用ajax ......
<?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的参考,以便您可以构建异步调用以及您的应用程序如何围绕它... < / p>