0

ネイティブのyii手段を使用せずに、yiiで動作する単純なajax呼び出しを取得しようとしています。私の目標は、createアクションでdbルックアップを使用して、郵便番号フィールドからの入力で州と都市のフィールドにデータを入力することです。別のJavaScriptファイルがあります。

    $('#Accounts_zip').bind('focusout',function(){     
    $.ajax({
        type: 'POST',
          url:'/gatesadmin/index.php?r=Accounts/Ziplookup',
          data: {zip:$('#Accounts_zip').val()},
          success:  function(datain, textStatus, jqXHR) {alert(datain.statecode);} ,
          error: function(jqxhr, textStatus, errorthrown){alert(errorthrown);},
          dataType:JSON
       });
    alert($('#Accounts_zip').val());
    });

and in my AccountsController I have:

public function actionZiplookup()
{
    $z = new ZipDao();
    $row = $z->GetCityStateByZip($_REQUEST['data']);
    header('Content-Type: application/json; charset="UTF-8"');
    echo CJSON::encode(array('output'=>$row));
}

and my form is out of the box generated CRUD:

...
    <div class="row">
    <?php echo $form->labelEx($model,'zip'); ?>
    <?php echo $form->textField($model,'zip',array('size'=>10,'maxlength'=>10)); ?>
    <?php echo $form->error($model,'zip'); ?>
</div>
...

アラートを受け取ったのでjavascriptが機能していることがわかります。また、URLを直接呼び出すと、返されたjsonを受け取っているため、yiiはactionZiplookupイベントを発生させます。jquery ajax失敗イベントで外部サーバーエラーが発生したため、ajaxを正常に呼び出すためのフォームを取得できないようです。ネットと最も近い例を調べて、JavaScriptをフォーム自体に埋め込み、Yii :: app()-createUrl()メソッドを使用してURLを定義しましたが、コントローラーを取得する方法が必要です。 javascriptコードを別のファイルに保持しながら起動するアクション。

どんな助けでも大歓迎です。

4

1 に答える 1

0

私が見逃していたものがここにあることがわかりました: How to get response as json format(application/json) in yii? それはすべて、コントローラーにレイアウトを無視するように指示することなどに関係しています.

于 2013-01-10T13:59:51.547 に答える