如何为.success和.fail实现不同的jQuery加载回调函数?

时间:2012-09-11 17:27:53

标签: jquery

我已经阅读了jQuery API,但我仍然不清楚。这是我的代码示例:

        $.ajax({
            url: href,
            type: 'GET'
        })
        .success(function (content) {
            $('#content')
                .html("<div class='block-border'>" + content + "</div>")
                .applyTemplateSetup()
                .buildTableOfContent();
            if ($('#cityLegend-1').length) {
                $('#cityLegend-1').html("Question " + html);
            }
            $('#article').css('visibility', 'visible');
            var editHref = "/Admin/Contents/Edit?pk=0003000&rk=" + href.substring(2,5);
            $('#editContent').attr('data-href', editHref);
        })
        .fail(function (ajaxContext) {
            ajaxOnFailure(ajaxContext)
        });

必须使用jQuery .load,因为我的模板已经编码以实现一些效果并调用jQuery .load()。但是,如果有一个.success或.fail,我如何使我的回调做不同的事情,就像我在这里执行的函数一样,我怎么能实现.done函数。

还有一个问题。如果我能够使用.load,那么如果我的内容包含HTML标记,则会出现问题。这很有可能,我在某些地方读到这可能是一个问题。

3 个答案:

答案 0 :(得分:4)

喜欢这个

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  },
  error: function(data){
    //error
  },
 complete: function(data){
   //complete
 }
});

答案 1 :(得分:1)

这可能有所帮助。

$("#content").load(href, function(response, status, xhr){
  if(status == "error") {
    ajaxOnFailure(response);
  } else {
    ajaxOnSuccess(response);
  }
});

(顺便说一下,.load()'s documentation中有一个例子。)

答案 2 :(得分:0)

您可以将其用于错误处理

$(document).ready(function() {
 $('#races a').click(function () {
  $('#results').load('Racing/' + $(this).attr('href') + ' #wrap', "", function(responseText, textStatus, XMLHttpRequest) {
   switch (XMLHttpRequest.status) {
    case 200: break;
    case 404:
     $('#results').html('<p>Looks like the results have not been uploaded to the server yet. Please check back later.</p>');
     break;
    default:
     $('#results').html('<p>' + XMLHttpRequest.status + ': ' + XMLHttpRequest.statusText + '. Please contact the club and let them know.</p>');
     break;
   }
  });
  return false;
 });
});