在自定义方法内调用ajax,并将ajax结果返回给被调用的方法
在我的JSP中,我有链接和按钮,我想调用Ajax操作并与结果一起使用 我正在为链接和按钮创建事件,并调用Ajax。我需要将结果返回给调用方法在自定义方法内调用ajax,并将ajax结果返回给被调用的方法,ajax,jquery,Ajax,Jquery,在我的JSP中,我有链接和按钮,我想调用Ajax操作并与结果一起使用 我正在为链接和按钮创建事件,并调用Ajax。我需要将结果返回给调用方法 //event for button $(document).on('click', ".addComponent", function(){ var htmlContent=$(this).html(); $('.addComponent').html('Loading...').fadeIn(); var
//event for button
$(document).on('click', ".addComponent", function(){
var htmlContent=$(this).html();
$('.addComponent').html('Loading...').fadeIn();
var urlAction=$(this).attr("id");
var dataFields=$(this).data('val');
var data=callActionUsingAjax(urlAction, dataFields); //data not returning from ajax
var ajaxActionResult=ajaxResult(data);
$('.addComponent').html(htmlContent).fadeIn();
$('#popUpForm').html(ajaxActionResult);
$('#popUpForm').dialog("open");
return false;
});
//event for link
$(document).on('click', "#dimComponentList >TBODY > TR > TD > a", function(){
$("body").css("cursor", "progress");
var urlAction=$(this).attr("href");
var dataFields="";
var data=callActionUsingAjax(urlAction, dataFields);
var ajaxActionResult=ajaxResult(data); //ajax not returning data
$("body").css("cursor", "auto");
$('#applicationList').html(ajaxActionResult);
return false;
});
下面是我调用Ajax的方法
function callActionUsingAjax(urlAction,datafields)
{
$.ajax({
type: "post",
url: urlAction,
data: datafields,
success: function (data) {
return data;
}
});
}
我试过了,但我不知道如何对我的自定义方法使用回调。还有一些其他事件我需要称之为Ajax。这就是我在自定义方法中使用Ajax的原因
有人能给我一个解决方案吗?Ajax调用是异步的,在执行过程中需要花费时间来完成,这就是为什么“返回”中没有任何数据 您需要将回调函数传递给
callActionUsingAjax
,并在success
处理程序中调用它(或者根据逻辑调用complete或error)
像这样:
$(document).on('click', ".addComponent", function(){
//... other stuff
callActionUsingAjax(urlAction, dataFields, function (data) { //this is tha callback (third argument)
var ajaxActionResult=ajaxResult(data);
$('.addComponent').html(htmlContent).fadeIn();
$('#popUpForm').html(ajaxActionResult);
$('#popUpForm').dialog("open");
// all of the above happens when ajax completes, not immediately.
});
return false;
});
function callActionUsingAjax(urlAction, datafields, callback)
{
$.ajax({
type: "post",
url: urlAction,
data: datafields,
success: function (data) {
callback(data);
}
});
}