来自jQuery .ajax和dataType json的返回参数是什么?

时间:2012-09-25 06:41:45

标签: jquery ajax json

我有以下内容:

    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的参数。我怎么能这样做?

1 个答案:

答案 0 :(得分: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;
}