0

私はajaxを使用して、kohanaルーティングを介してコントローラーを呼び出しています。このコントローラー内で、フォームのすべてのフィールドを検証し、検証に失敗したフィールドに関するデータを属性に保存します。

次に実行したいのは、同じコントローラーに対して2番目のajax呼び出しを行い、この属性を取得して、これを使用していくつかのアクションを実行することです。

ただし、2番目の呼び出しでは、属性は明らかに空です。

これを解決する方法はありますか?最初のajax呼び出しで属性をエコーせずに?

編集。

$("#form").validate({
   rules {
      remote: "ajax_file.php"
   }
   messages {
      // I want to get information from ajax call above here
   }
});

jQuery:1.9.0

最初のブロック(ルール)では、TRUEまたはFALSEをエコーする必要があります。そのため、失敗したフィールドに関する情報もエコーできません。

ajax_file.phpで、失敗したフィールドに関するデータを収集しています。以下の2番目のajax呼び出し(メッセージ)を実行し、2番目の.phpファイルでこのデータを処理する必要があります。

4

2 に答える 2

0

2 つのリクエストを行うのは避けてください...代わりに 1 つのリクエストで行うことができます..

あなたのコントローラーで

public function action_ajaxmethod(){

  // do some validation code here
  // every error will be stored in
  // **err** variable

  if(!empty(err)) die(json_encode("success" => false, "errors" => err));
  else die(json_encode("success" => true));
}

あなたのjsで

$.ajax({
  url: 'ajaxmethod',
  data: {data: data},
  type: 'POST',
  dataType: 'json',
  success: function(result){
    if(result['success']==true){
      // do some actions
    }
    else{
      // do some actions
    }
  }
});

お役に立てれば...

于 2013-03-26T03:36:59.673 に答える
0

私が理解しているように、フィールドを検証したいのですね。kohana class 'Validate' (Validate::factory($_POST)) を任意のルールで使用して、コントローラーのフィールドを検証してみませんか...そして、結果をフォームに返します。

PSあなたの場合、最初の呼び出しが終了した後、ajax成功オプションを使用して2番目のajax呼び出しを実行できます

于 2013-03-06T00:02:49.833 に答える