我正在使用回调,因为我希望我的数据填充在另一个域上(通过使用我的javascript)。
/*
*
* Description: This function is AJAX loader for Footer and processing Callback function as a response"
*
* @Param :actionName : The URL to be called
*
* */
function ajaxFooterLoader(actionName) {
$.ajax({
type: 'GET',
url: "http://localhost:8080/ajax/ttsGetContent.do?languageCode=en&productType=package&pageId=packageSearchResults&format=jsonp&includes=FOOTER",
dataType: "json",
success: function(response) {
//WHAT SHOULD I DO???
},
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
}
下划线,是我在通过AJAX调用url之后得到的响应,我在url中传递格式,它直接返回我的函数即被调用,即processFooter。
但是,我不明白成功后应该怎么做,所以它直接调用我的函数,这是由回调调用返回的
来自服务器的网址响应
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成功应该如何调用此功能?
提前致谢
答案 0 :(得分:1)
由于您的服务器返回JSONP,您必须告诉jQuery您期望JSONP:
dataType: 'jsonp'
由于回调名称似乎是硬编码的,因此您还必须告诉jQuery。否则它将生成一个随机函数名称。
jsonpCallback: 'processFooter'
jQuery会自动创建一个具有这样名称的函数,因此您应该将success
更改为
success: function(response) {
mergeTemplateFooter(response);
},
您可以在$.ajax
documentation。
另请注意,此处error
函数在此处无用,因为如果使用JSONP,jQuery无法调用它:
错误强>
注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。
答案 1 :(得分:0)
首先,您应该只从服务器返回JSON对象:
{
"copyRight": {
"description": null,
"id": null,
"name": "© 2015 AC",
"style": null
}
}
其次,你可以做两件事之一,直接发送到你的命名函数:
success: processFooter,
或(更常见)
success: function(response) {
//WHAT SHOULD I DO???
processFooter(response);
},
更好地摆脱你的processfooter()
功能,只需使用:
success: function(response) {
//WHAT SHOULD I DO???
mergeTemplateFooter(response);
},
最重要的是:
success: function(response) {
//WHAT SHOULD I DO???
//Perform your mergeTemplateFooter() code here.
},