Javascript 如何在jqxhr.complete函数中访问responseText

Javascript 如何在jqxhr.complete函数中访问responseText,javascript,jquery,Javascript,Jquery,首先,我是一个完整的javascript和jQueryNoob,如果这个问题是愚蠢的,我很抱歉。但我真的没有在jQuery文档或谷歌上找到答案 我正在尝试在请求完成时对响应执行操作 但我无法访问responseText。我觉得jqxhr对象有一个成员responseText。但我得到以下错误“responseText未定义” this.load = function(fileName, actionFunction){ var jqxhr = $.post(SERVER,{command

首先,我是一个完整的javascript和jQueryNoob,如果这个问题是愚蠢的,我很抱歉。但我真的没有在jQuery文档或谷歌上找到答案

我正在尝试在请求完成时对响应执行操作 但我无法访问responseText。我觉得jqxhr对象有一个成员responseText。但我得到以下错误“responseText未定义”

this.load = function(fileName, actionFunction){
    var jqxhr = $.post(SERVER,{command : "load", filename : fileName})
    .complete(function(){ 
        actionFunction(responseText);
    });
}
编辑

如果我这样做

.complete(function(responseText){ actionFunction(responseText);}
或者戴夫·沃德的建议

我没有出错,但什么也没发生

我知道它不是actionFunction(),因为如果出于测试目的手动输入字符串,它会执行我期望它执行的操作

当尝试查看哪个参数通过时(在actionfunction中将其优先发送到控制台),我得到[object];即使尝试将其转换为字符串(字符串(参数))

结束编辑

我做错了什么,或者如何访问.complete函数中的responseText


tnx预先

问题在于,您没有在匿名函数中捕获该响应参数,因此在从内部调用actionFunction时没有定义该参数。您可以这样修复:

.complete(function(responseText) {
  actionFunction(responseText);
});
更好的是,您可以利用JavaScript的函数性质,将函数本身作为回调传递给。完成:

.complete(actionFunction);

您的actionFunction将使用您期望的参数自动调用。

使用
$。post
方法是使用预定义的某些参数调用
$.ajax
的简写方法

从中,向
complete
回调传递两个参数:
jqXHR
textStatus
,其中
jqXHR
是实际的
XMLHTTPRequest
对象

因此,这是要传递给处理程序的第二个参数:

.complete(function(jqXHR, responseText) {
  actionFunction(responseText);
});
请注意,在本例中,
responseText
实际上只是一个状态指示器,如“success”或“error”(因此jQuery将其命名为“textStatus”)。假设变量名中有“response”一词,我猜(就像他一样)您可能希望
成功
回调而不是
完成

.success(function(data, textStatus, jqXHR) {
  actionFunction(renderDataToString(data));
});

在这两种情况下,在firebug i get[object]中打印出给定给actionFunction的参数时都不会发生任何事情;我尝试使用字符串(参数),但从听起来您试图执行的操作来看,这不起作用,我认为您希望使用.success回调而不是.complete。它的第一个参数是从您的帖子返回的数据。complete更通用,它将jqXHR和状态作为参数传入,而不是原始响应本身。非常感谢您的帮助,您是对的。我选择丹涛作为答案,因为你在这里的回答只是一个评论