Javascript AJAX成功后的Callaback函数
我使用回调是因为我希望我的数据被填充到另一个域(通过使用javascript) 下划线是我通过AJAX调用url后得到的响应,我在url中传递格式,该格式直接返回我要调用的函数,即processFooter 但是,我不知道成功后应该做什么,所以它直接调用回调函数返回的函数 来自服务器的URL响应Javascript AJAX成功后的Callaback函数,javascript,jquery,Javascript,Jquery,我使用回调是因为我希望我的数据被填充到另一个域(通过使用javascript) 下划线是我通过AJAX调用url后得到的响应,我在url中传递格式,该格式直接返回我要调用的函数,即processFooter 但是,我不知道成功后应该做什么,所以它直接调用回调函数返回的函数 来自服务器的URL响应 processFooter({ "copyRight": { "description": null, "id": null, "name": "
processFooter({
"copyRight": {
"description": null,
"id": null,
"name": "© 2015 AC",
"style": null
}
})
我的功能:
这是AJAX返回的函数,在AJAX调用上面定义
/*
*
* Description: This function will process footer
*
* @Param :dataFooter : it takes JSON as input
*
*
* */
function processFooter(dataFooter) {
mergeTemplateFooter(dataFooter);
}
请告诉我ajax成功应该如何调用此函数
提前感谢因为您的服务器返回了JSONP,所以您必须告诉jQuery您需要JSONP:
dataType: 'jsonp'
由于回调名称似乎是硬编码的,因此还必须告诉jQuery。否则,它将生成一个随机函数名
jsonpCallback: 'processFooter'
jQuery将自动创建一个具有此名称的函数,因此您应该将success
更改为
success: function(response) {
mergeTemplateFooter(response);
},
有关更多信息,请参阅
还要注意,您的
error
函数在这里是无用的,因为如果您使用的是JSONP,jQuery无法调用它:
dataType: 'jsonp'
错误
注意:跨域脚本和跨域JSONP请求不调用此处理程序
首先,您应该只从服务器返回JSON对象:
{
"copyRight": {
"description": null,
"id": null,
"name": "© 2015 AC",
"style": null
}
}
其次,您可以执行以下两种操作之一,直接发送到指定函数:
success: processFooter,
或者(更常见)
最好不要使用processfooter()
函数,只需使用:
success: function(response) {
//WHAT SHOULD I DO???
mergeTemplateFooter(response);
},
最重要的是:
success: function(response) {
//WHAT SHOULD I DO???
//Perform your mergeTemplateFooter() code here.
},
您的服务器似乎返回JSONP,而不是JSON。为什么?是的,它返回了用于回调的JSONP即使我尝试使用JSONP,问题是成功后我的函数将如何执行?
success:processFooter(response),
不正确。它将立即调用processFooter
。它应该是success:processFooter
。为什么你声称把所有的东西都放在成功中会是“最好的”?分离关注点是一种很好的模式。在我的理解中,“关注点”是获取并处理页脚,为什么他必须单独打电话。“获取并处理页脚”请参见,我将“获取”与“处理”分开。这使您可以轻松更改获取数据的方式或处理数据的方式,而不会影响其他流程。但每个人都有不同的应用程序结构风格。如果你能提供充分的理由,建议一种不同的方法没有什么错。但声称它是“最好的”在我看来只是有点过头了。也许最高级的说法是错误的,但我的回答仍然有效。出于好奇,为什么直接调用processFooter是错误的?我从来没有说过它不是错误的(除了我指出的一个问题(这仍然是一个问题))。jsonpCallback是否可能有两个函数。例如,如果我的服务器返回两个回调函数,如processFooter和processAboutUs?不,这是不可能的。JSONP是定义良好的格式,不能有两个函数调用(如果有,它不是JSONP而是任意的JavaScript)。你能给我一些技巧吗,因为在我的url中包含的是FOOTER,ABOUT_US返回两个函数processFooter和processAboutUs,我只想对服务器进行一次调用如果你只想进行一次调用,您必须将所有数据传递回单个回调,即回调(AllTheData here
)。然后在客户端,您需要一个将正确的数据子集传递给其他两个函数的函数。对不起,我没有得到!!你能给我举个例子吗…真的很感激
success: function(response) {
//WHAT SHOULD I DO???
//Perform your mergeTemplateFooter() code here.
},