ネイティブの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コードを別のファイルに保持しながら起動するアクション。
どんな助けでも大歓迎です。