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 回答