3

次のコードがあります。

    $.ajax({
        url: href,
        dataType: 'json',
        type: 'POST',
        data: $form.serializeArray()
        })
        .done(onDone)
        .fail(onFail);

onDone 関数は次のとおりです。

var onDone = function (json, textStatus, XMLHttpRequest) {
    json = json || {};
    if (json.Success) {
        submitSuccessModal(json);
  • これらが onDone 関数の正しい引数かどうか誰か教えてください。また、$.ajax 呼び出しはどのようにしてこれらを取り込む方法を知っているのでしょうか?

  • Also what's this code doing: json = json || {};

4

2 に答える 2

0

イベントには.done、応答を処理する関数が必要です。

例えば:

.done(function(return){
  //do something here where return is the result of the AJAX call
})

私がすることは、上記のように、機能を自分の完了、成功などに配置することです。

このコードjson = json || {};は、変数を JSON の戻り値または空のオブジェクトに設定することを意味します。これは、New キーワードを使用するよりも優先されます。

これは次のようになります。

.done(function(json){
    json = json || {};
    If(json.Success){
      submitSuccessModal(json);
    }
})
于 2012-09-18T03:17:06.460 に答える
0

「これらが onDone 関数の正しい引数であるかどうか誰か教えてもらえますか。また、$.ajax 呼び出しはどのようにしてこれらの値を取り込む方法を知っているのでしょうか?」

それらは正しい議論です。しかし$.ajax()、関数で宣言した引数を知らないか気にしません-宣言した関数に関係なく、関数は3つの引数で呼び出されます: 「サーバーから返されたデータは、dataTypeパラメーターに従ってフォーマットされます。ステータスを記述する、jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト。実際の引数の名前は重要ではありません。重要なのは順序です。使用する必要のないものは無視できます。ほとんどの場合、最初の実際のデータのみが必要です。

一般的な意味では、JavaScript 関数は、宣言された引数の数に関係なく、任意の数の引数で呼び出すことができるため、使用している引数が 1 つだけの場合は、最初の引数を宣言するだけでかまいません。または、引数を宣言せずに、argumentsobjectを介して渡されたものにアクセスすることもできます。

「また、このコードは何をしているのか: json = json || {};`」

演算子は、最初の||真のオペランドを返します。この場合、 がまだjsonオブジェクトでない場合は、それを空のオブジェクトに割り当てると簡単に言えます。.done()Ajax コールバックのコンテキストでは、応答が有効な JSON として正常に解析されない限り、jQuery は関数を呼び出さないため、このテストは必要ないと思います。

(引数が実際に JSON を受け取るのではなく、オブジェクトを受け取ることにも注意してくださいjson。jQuery は内部で JSON を受け取りますが、それを解析して結果を関数に渡します。)

于 2012-09-18T04:12:19.903 に答える