中间javascript:ajax请求的包装函数稍后执行主函数
好的,通常我有一个ajax请求包装函数,在这里我传递$data和中间javascript:ajax请求的包装函数稍后执行主函数,javascript,jquery,Javascript,Jquery,好的,通常我有一个ajax请求包装函数,在这里我传递$data和$successfunction并执行$.ajax请求 但我要做的是生成另一个函数:$successFunctionB,它将$successfunction作为参数 因此,我将$data和$successFunctionB传递给$.ajax请求 假设这是一个成功的结果$successFunctionB执行$successFunctionB检查数据结果中的值。如果它是某个值,那么它将执行$successfunction。 可能让我困惑
$successfunction
并执行$.ajax
请求
但我要做的是生成另一个函数:$successFunctionB
,它将$successfunction
作为参数
因此,我将$data和$successFunctionB
传递给$.ajax
请求
假设这是一个成功的结果<代码>$successFunctionB执行<代码>$successFunctionB检查数据结果中的值。如果它是某个值,那么它将执行$successfunction
。
可能让我困惑的是,ajax请求的SuccessFunction只能有一个参数作为输入,即结果数据
这是我要做的事的错误代码
function ajaxCall($data,$successFunctionA)
{
var $successFunctionB = function($data,$successFunctionA)
{
data = jQuery.parseJSON($data);
if(data.result=='good')
{
$successFunctionA(data);
}
}
$.ajax(
{
type:'POST',
url:'server.php',
datatype:'json',
data:$data,
success:$successFunctionB,
});
}
您不需要将$successfunction传递给$successFunctionB-函数B将有权访问函数A,因为在javascript中,函数是闭包。代码如下所示:
function ajaxCall($data,$successFunctionA)
{
var $successFunctionB = function($data)
{
data = jQuery.parseJSON($data);
if(data.result=='good')
{
$successFunctionA(data);
}
};
$.ajax(
{
type:'POST',
url:'server.php',
datatype:'json',
data:$data,
success:$successFunctionB,
});
}
var $successFunctionB = function($successFunctionA, $data)
这是js中最重要的概念之一,因此如果您不熟悉闭包,我建议您仔细阅读它们:如果您使用的是jQuery 1.6或更高版本,
$。代理可以应用部分参数:
$.ajax(
{
type:'POST',
url:'server.php',
datatype:'json',
data:$data,
success:$.proxy($successFunctionB, this, $successFunctionA)
});
第一个参数是要执行的函数,第二个参数是此
指针的上下文。任何后续参数都将传递给$successFunctionB
函数。最后,$.ajax
调用将附加自己的数据作为最后一个参数,因此您应该像这样对它们重新排序:
function ajaxCall($data,$successFunctionA)
{
var $successFunctionB = function($data)
{
data = jQuery.parseJSON($data);
if(data.result=='good')
{
$successFunctionA(data);
}
};
$.ajax(
{
type:'POST',
url:'server.php',
datatype:'json',
data:$data,
success:$successFunctionB,
});
}
var $successFunctionB = function($successFunctionA, $data)