(function($)
{
$.fn.makeAjaxPostCall = function(options)
{
var settings = $.extend( true,{}, $.fn.makeAjaxPostCall.defaults, options );
$.ajax({
type: 'POST',
url: settings.url,
data: settings.data,
success: function(data, textStatus, xhr){
if (xhr.readyState === 4 && xhr.status === 0) {
alert('Network Error');
}
else {alert(data);
settings.callback.call(data);
}
},
error: function(xhr, textStatus, errorThrown) {
if (textStatus !== null) {
alert("error: " + textStatus);
} else if (errorThrown !== null) {
alert("exception: " + errorThrown.message);
}
else {
alert ("error");
}
}
});
};
$.fn.makeAjaxPostCall.defaults = {
type : 'POST',
url : '',
data : {},
obj : $(document),
callback : function(data){}
};
})(jQuery);
这是我的ajax功能。我将此功能称为
$(document).makeAjaxPostCall({
type : 'POST',
url : 'UpdateNodeStatus',
data : {
workshopid : 1,
userid : 1001,
level : 5,
nodeid : 10,
resolutionid : 1
},
callback : function(data){
alert(data);
}
});
发布后,我从servlet返回'true'。
response.setContentType("text");
PrintWriter pw = response.getWriter();
pw.print(true);
我在'成功'中获取数据为'true',但在回调中为'undefined'。
如何将“数据”从“成功”传递到“回调”功能以在其中使用?
答案 0 :(得分:1)
您可以直接调用回调函数而不使用.call,如下面的
settings.callback(data);
或者如果您想使用.call
,请将this
作为.call
的第一个参数发送。
if (xhr.readyState === 4 && xhr.status === 0) {
alert('Network Error');
}
else {
alert(data);
settings.callback.call(this, data);
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call