0

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;       
}

この場合、関数が正確に何をするかは無視しましょう (単なる例です)。テキストフィールドが getuserdata アクションindex.php?r=user/getuserdataを json ファイルで呼び出す/トリガーする方法を知りたいです。これは、テキスト フィールドと json ファイルのアクションの間の関係を構築する方法を意味します。

これをyiiで動作させる方法を教えてください

_form.php(textfield) は json ファイルをトリガーします (アクション)

4

1 に答える 1

0

javascriptを使用すると、特定のjavascriptイベントに基づいてコントローラーのactioncallに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();')); ?>

これを実現するために、 jqXHRjQuery.ajax()の関数とリファレンスについて調べて、非同期呼び出しを作成し、アプリケーションがそれを中心にどのように回転するかを調べることができます。

于 2013-03-13T16:09:23.210 に答える