2

私は次のものを持っています:

    var row = 99;
    $.ajax({
        cache: false,
        url: "/Admin/" + obj.table + "s/JsonUpdate",
        dataType: 'json',
        type: 'POST',
        data: { PartitionKey: pk,
                RowKey: rk,
                Entity: entity,
                Field: type, 
                Value: val }
    })
    .done(updateFieldDone(json, textStatus, XMLHttpRequest, row))
    .fail(function (jqXHR, textStatus, errorThrown) {
        ajaxOnFailure(jqXHR, textStatus, errorThrown)
    });

しかし、.doneで正確に何が返されるかについて私は混乱しています。updateFieldDone(json、textStatus、XMLHttpRequest、row)をこのようにコーディングしても大丈夫ですか?以前はupdateFieldDone()を使用していましたが、問題は、rowというパラメーターを渡す必要があることです。どうやってやるの?

4

1 に答える 1

2

このcontextパラメーターを使用して、追加のデータを成功コールバックに渡すことができます。

var row = 99;
$.ajax({
    cache: false,
    url: "/Admin/" + obj.table + "s/JsonUpdate",
    dataType: 'json',
    type: 'POST',
    context: { row: row },
    data: { 
        PartitionKey: pk,
        RowKey: rk,
        Entity: entity,
        Field: type, 
        Value: val 
    }
})
.done(function(json) {
    // Here "this" will represent the object we passed as context
    var row = this.row;
})
.fail(function (jqXHR, textStatus, errorThrown) {
    ajaxOnFailure(jqXHR, textStatus, errorThrown)
});

または、別の関数で使用する場合:

var row = 99;
$.ajax({
    cache: false,
    url: "/Admin/" + obj.table + "s/JsonUpdate",
    dataType: 'json',
    type: 'POST',
    context: { row: row },
    data: { 
        PartitionKey: pk,
        RowKey: rk,
        Entity: entity,
        Field: type, 
        Value: val 
    }
})
.done(updateFieldDone)
.fail(function (jqXHR, textStatus, errorThrown) {
    ajaxOnFailure(jqXHR, textStatus, errorThrown)
});

次に、関数を定義します。

function updateFieldDone(json) {
    // Here "this" will represent the object we passed as context
    var row = this.row;
}
于 2012-09-25T06:44:24.003 に答える