2013-09-14 5 views
0

Может ли кто-нибудь сказать мне, почему мой обратный вызов в этом jQuery не вызван?Ошибка обратного вызова успеха не работает

$(document).ready(function() { 

    var queueid = $('#hidqueueid').val(); 
    var queuemax = $('#hidqueuemax').val(); 
    var queuenext = $('#hidqueuenext').val(); 
    var sid = $('#hidsid').val(); 
    var acc = $('#hidacc').val(); 
    var key = getCookie('account_key'); 

    var processNext = function() { 
     var url = "functions.aspx?sid=" + sid + "&acc=" + acc + "&func=processqueue&id=" + queueid + "&next=" + queuenext + '&key=' + key; 
     showProgress(); 
     $.post(url, function (data) { 
      alert(data); // <== never happens :(
      var result = $(data).attr('result'); 
      if (result == 'ok') { 
       queuenext = $(data).attr('next'); 
       if (queuenext > 0) { 
        $('#hidqueuenext').val(queuenext); 
        processNext(); 
       } else { 
        var newurl = 'Data.aspx?sid=' + sid + '&acc=' + acc; 
        location.href = newurl; 
       } 
      } 
     }, function() { 
      // error 
      alert('Oops!'); 
     }); 
    }; 

    var showProgress = function() { 
     var output = "<div>" + queuenext + " of " + queuemax + "</div>"; 
     $('#divprogress').html(output); 
    }; 

    processNext(); 
}); 

C#, который возвращает результат работает отлично и выглядит следующим образом:

string xml = new Queue(sid, acc, queueId).ProcessItem(queueNext, key); 
Response.ClearContent(); 
Response.ContentType = "text/xml"; 
Response.Write(xml); 
System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest(); 

XML-выглядит хорошо, когда я отладки C#

Спасибо за любую помощь! Все предложения приветствуются.

+3

Какой статус HTTP проходит через провод? –

+0

Я понятия не имею. Как я могу узнать? Я попробую Googling это – CompanyDroneFromSector7G

+0

Используйте инструмент отладки, такой как [Fioddler] (http://www.fiddlertool.com/) –

ответ

3

post имеет три начальных параметра, первый - адрес, второй - data, который должен быть нулевым в вашем случае, а третий - обратным вызовом успеха.

Если вам нужно потерпеть неудачу обратного вызова используйте fail метод:

$.post('', null, null).fail(function(data) {}); 

Кроме того, если вы чувствуете себя более комфортно работать с этим XMLRequest объекта, вы можете использовать complete метод:

$.post('/do/action', { Id: 120 }, null).fail(function(data) { 
    // code 
}).complete(function(data) { 
    // code for complete, which is the same as success callback. 
}); 

Существует также метод .always(), который всегда обращается назад, хе-хе. И others.

+0

Код в порядке, кроме обратного вызова отказа. Я удалил это, и теперь он работает. Спасибо всем, кто это указал! – CompanyDroneFromSector7G

+0

@ bukko, возможно, вам, возможно, потребуется увеличить свою «маркировку как скорость ответа». :) – AgentFire

+1

Я всегда замечаю правильные ответы, кстати;) – CompanyDroneFromSector7G

Смежные вопросы