获取响应数据到jQuery ajaxComplete函数中

时间:2009-07-09 11:07:47

标签: jquery ajax complete

我想做的是从任何ajax调用发送返回数据,并且在ajaxComplete函数中也可以使用它。

因此,如果我有$.post$.get$.getJSON等请求,请执行以下操作:

$.post(url, options, function(DATA)
{
    $('output').html(DATA);
});

我也希望将相同的数据输入

$.ajaxComplete(function(event, XMLHttpRequest, ajaxOptions)
{
    // do something with DATA that is returned by the ajax request
    alert(DATA);
});

这意味着我想在全局ajaxComplete函数中获取与调用其中一个ajax函数时相同的数据。

感谢您的回复。

3 个答案:

答案 0 :(得分:7)

XMLHttpRequest.responseText

请注意,如果在调用json时设置dataType或使用getJSON函数,则必须复制jquery在内部执行的操作并使用eval('('+ data +')')将数据导入json这样它就会镜像传递给成功回调的数据参数。

或者,就像Activa指出的那样,只需调用内部方法来保存工作。

答案 1 :(得分:4)

您可以使用

在ajaxComplete函数中转换为JSON
$.parseJSON(xhr.responseText);

答案 2 :(得分:1)

没有简单的方法可以做到这一点,但您可以从xhr对象中提取数据。 jQuery包含一个内部函数,可以做到这一点,但它没有文档。

您可以这样调用此方法:

$.ajaxComplete(function(event, xhr, options)
{
    var data = $.httpData(xhr,options.dataType);

    alert(data);
});

但要注意:这在jQuery 1.3.2中是有效的,因为它没有文档,所以在将来的jQuery版本中可能会有所改变。