2

Ajax で CFC コンポーネントを呼び出そうとしています。しかし、CFC から返された値を JavaScript ルーチンに渡す必要があります。この関数は、アラートdoneに表示するときに正しいメッセージを作成します。msgただし、ret変数にその値が入力されることはありません。JavaScript のデータ フローを変更するには、返される値が必要です。

私は何を間違っていますか?

var ret = $.ajax({
              type: "post",
              url: "cfc/CFCSemae.cfc",
              data: {
                  method: "verificaCadastro",
                  returnformat: "plain",
                  queryformat: "column",
                  nro_cadastro: num_cad
      },
      dataType: "html",
      }).done(function(msg){ return msg; });

alert(ret);
4

2 に答える 2

2

次のコードでそれを行うことができますが、非同期リクエストを実行している場合は、コールバックが実行されたときにのみ結果が得られることを理解してください。コードは単に$.ajax関数を呼び出しますが、応答を待機しません(別のスレッドにある場合のように)。応答の準備ができると、コールバックcompleteが実行されます。応答が成功メッセージ(HTTPステータス200)を返す場合、successコールバックが呼び出され、それ以外のerror場合は呼び出されます。

//somewhere in your script
var ret = '';

// then at the ajax request
$.ajax({
    type: "post",
    url: "cfc/CFCSemae.cfc",
    data: { method: "verificaCadastro", returnformat: "plain",
            queryformat: "column", nro_cadastro: num_cad },
    dataType: "json",
    contentType: "application/json; charset=utf-8", // make sure your serverside function can return json
    success: function(data) {
        //your own validation to check whether 'data' is a valid response 
        ret = data;
    },
    error: function(xhr, msg) {
        // handle error
    }
});

ajaxプログラミングに関する次の記事をお読みください。これにより、非同期プログラミングとは何かをよりよく理解できるようになります。http: //en.wikipedia.org/wiki/Ajax_ (programming )

編集:スペルミスを修正

于 2012-04-16T20:03:15.893 に答える
0

AJAX は非同期です。同期呼び出しを行わないと、コールバックから値を返すことはできません。あなたは本当にそれをしたくありません。

success: ハンドラーのコールバック関数を提供します。そこにロジックを追加して、返されたデータを JavaScript フローに配置できます。

于 2012-04-16T19:48:36.133 に答える