0

私は JavaScript がまったく初めてで、スクリプトの意味を理解するのが困難です。:(誰かが私を助けてくれるか、アドバイスをくれることを願っています、ありがとう! :)

次のようなAjax関数を呼び出すjavascriptがあります。

  callAjax('../team.cgi', 'POST', data, function(text)

ajax2.js では、関数 callAjax を次のように定義します。

  function callAjax(url, method, data, handler, waittime, timeout_func)

私の質問は、パラメータ関数(テキスト)は何ですか?

4

3 に答える 3

3

function(text)無名関数の定義の始まりです。おそらく、呼び出しは次のようになります。

callAjax('../team.cgi', 'POST', data, function(text)
{
    // do something with text
});

これらの大括弧の間に定義された関数は、変数 を受け取り、textそれを使って何かを行います。関数は第一級市民であるため、JavaScript ではこれが可能です。変数に割り当てたり、匿名で定義したりできます。

通常、関数のhandlerパラメーターはcallAjaxコールバックです。これは、Ajax 呼び出しが完了したときに特定の引数が渡される関数です。これは非同期コードの典型です。

上記のスニペットは、機能的にはこれと同じです。

function doSomethingWhenAjaxCompletes(text) {
    // do something
}

callAjax('../team.cgi', 'POST', data, doSomethingWhenAjaxCompletes);

最初の唯一の違いは、関数が name で定義されていないことdoSomethingWhenAjaxCompletesです。代わりに匿名で定義されています。

于 2012-07-02T03:36:02.553 に答える
0

AJAX リクエストを発行すると、実行は停止せず、応答が返されるのを待ちます。代わりに、リクエストが送信され、実行が続行されます。AJAX 応答が返されたときに呼び出される「コールバック」関数と呼ばれるものを提供するだけです。通常、コールバック関数は、AJAX 要求への応答として返された応答オブジェクトまたはメッセージを含む単一の引数を取ります。

callAjax('../team.cgi', 'POST', data, function(text) {
    console.log('Got a response!');
    console.log(text);
}

これは単にリクエストを送信します。しばらくすると (ネットワーク遅延による一時停止の後)、コンソール ログ メッセージが表示され、応答が受信され、応答を「処理」するためのコールバック関数が呼び出されたことを示します。

于 2012-07-02T05:37:09.847 に答える
0

関数のコンテキストを見handlerないと、これは ajax 呼び出しから返された値であると推測されます。たとえば、上記の例でチームの xml リストを返す場合、ハンドラー関数team.cgiのパラメーターはそのリストであると予想されます。text

于 2012-07-02T03:34:39.530 に答える