AJAX成功后的Callaback功能

时间:2015-06-20 17:19:36

标签: javascript jquery

我正在使用回调,因为我希望我的数据填充在另一个域上(通过使用我的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成功应该如何调用此功能?

提前致谢

2 个答案:

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