Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX成功后的Callaback函数_Javascript_Jquery - Fatal编程技术网

Javascript AJAX成功后的Callaback函数

Javascript AJAX成功后的Callaback函数,javascript,jquery,Javascript,Jquery,我使用回调是因为我希望我的数据被填充到另一个域(通过使用javascript) 下划线是我通过AJAX调用url后得到的响应,我在url中传递格式,该格式直接返回我要调用的函数,即processFooter 但是,我不知道成功后应该做什么,所以它直接调用回调函数返回的函数 来自服务器的URL响应 processFooter({ "copyRight": { "description": null, "id": null, "name": "

我使用回调是因为我希望我的数据被填充到另一个域(通过使用javascript)

下划线是我通过AJAX调用url后得到的响应,我在url中传递格式,该格式直接返回我要调用的函数,即processFooter

但是,我不知道成功后应该做什么,所以它直接调用回调函数返回的函数

来自服务器的URL响应

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.
},