(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. И я называю эту функциюКак передать данные ответа от ajax для функции обратного вызова?
$(document).makeAjaxPostCall({
type : 'POST',
url : 'UpdateNodeStatus',
data : {
workshopid : 1,
userid : 1001,
level : 5,
nodeid : 10,
resolutionid : 1
},
callback : function(data){
alert(data);
}
});
после того, как сообщение произошло, я возвращаю «истину» из сервлета.
response.setContentType("text");
PrintWriter pw = response.getWriter();
pw.print(true);
Я получаю данные как «истина» в «успехе», но как «не определено» в функции обратного вызова.
Как передать данные с 'success' на функцию 'callback', чтобы использовать ее там?
Если это не просто 'settings.callback (данные);'? – Archer
@Archer - с помощью 'call()' должен работать, но все это похоже на простое переключение через множество обручей, чтобы создать новую функцию ajax, которая примерно такая же, как и уже доступная в jQuery? – adeneo
@ Арчер - да, это работает. спасибо – Sagar