Javascript 如何在jqxhr.complete函数中访问responseText
首先,我是一个完整的javascript和jQueryNoob,如果这个问题是愚蠢的,我很抱歉。但我真的没有在jQuery文档或谷歌上找到答案 我正在尝试在请求完成时对响应执行操作 但我无法访问responseText。我觉得jqxhr对象有一个成员responseText。但我得到以下错误“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
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和状态作为参数传入,而不是原始响应本身。非常感谢您的帮助,您是对的。我选择丹涛作为答案,因为你在这里的回答只是一个评论